diff --git a/.gitignore b/.gitignore index 3e6b857a..ed2fe66f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,95 @@ +# Boilerplate list of files in a PreTeXt project for git to ignore +# ensure this file is tracked +!.gitignore + +# don't track unpublished builds +output + +# don't track assets generated from source +generated-assets + +# don't track node packages +node_modules + +# don't track error logs +.error_schema.log +cli.log + +# don't track OS related files (windows/macos/linux) +.DS_Store +.DS_Store? +._* +.AppleDouble +.LSOverride +.Spotlight-V100 +.Trashes +Icon +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db +*.stackdump +*.lnk +*.cab +*.msi +*.msix +*.msm +*.msp +[Dd]esktop.ini +.directory +.fuse_hidden* +.Trash-* +.nfs* + +# Don't include VSCode generated files +.vscode +*.code-workspace + +# Don't inlucde SublimeText files +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +*.sublime-project + +# SFTP configuration file +sftp-config.json +sftp-config-alt*.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + + +# Don't include Dropbox settings and caches +.dropbox +.dropbox.attr +.dropbox.cache + +# Original .gitignore file __pycache__/ build/ build_info diff --git a/pavement.py b/pavement.py index 21294955..325974ab 100644 --- a/pavement.py +++ b/pavement.py @@ -28,6 +28,24 @@ else: dest = "../../static" +template_args={ + 'course_id': 'fopp', + 'login_required':'false', + 'course_title': project_name, + 'appname':master_app, + 'dynamic_pages': True, + 'loglevel': 10, + 'course_url':master_url, + 'use_services': 'true', + 'python3': 'true', + 'dburl': 'postgresql://user:password@localhost/runestone', + 'default_ac_lang': 'python', + 'basecourse': 'fopp', + 'downloads_enabled': 'false', + 'enable_chatcodes': 'false', + 'allow_pairs': 'false' +} + options( sphinx = Bunch(docroot=".",), diff --git a/pretext/AdvancedAccumulation/ChapterAssessment.ptx b/pretext/AdvancedAccumulation/ChapterAssessment.ptx new file mode 100644 index 00000000..eb2ee691 --- /dev/null +++ b/pretext/AdvancedAccumulation/ChapterAssessment.ptx @@ -0,0 +1,200 @@ +
+ Chapter Assessment + + + +

Write code to assign to the variable map_testing all the elements in lst_check while adding the string Fruit: to the beginning of each element using mapping.

+ +
+ + +lst_check = ['plums', 'watermelon', 'kiwi', 'strawberries', 'blueberries', 'peaches', 'apples', 'mangos', 'papaya'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(map_testing, ['Fruit: plums', 'Fruit: watermelon', 'Fruit: kiwi', 'Fruit: strawberries', 'Fruit: blueberries', 'Fruit: peaches', 'Fruit: apples', 'Fruit: mangos', 'Fruit: papaya'], "Testing that map_testing has the correct values.") + self.assertIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+ + + +

Below, we have provided a list of strings called countries. Use filter to produce a list called b_countries that only contains the strings from countries that begin with B.

+ +
+ + +countries = ['Canada', 'Mexico', 'Brazil', 'Chile', 'Denmark', 'Botswana', 'Spain', 'Britain', 'Portugal', 'Russia', 'Thailand', 'Bangladesh', 'Nigeria', 'Argentina', 'Belarus', 'Laos', 'Australia', 'Panama', 'Egypt', 'Morocco', 'Switzerland', 'Belgium'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(b_countries, ['Brazil', 'Botswana', 'Britain', 'Bangladesh', 'Belarus', 'Belgium'], "Testing that b_countries is correct.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+ + + +

Below, we have provided a list of tuples that contain the names of Game of Thrones characters. Using list comprehension, create a list of strings called first_names that contains only the first names of everyone in the original list.

+ +
+ + +people = [('Snow', 'Jon'), ('Lannister', 'Cersei'), ('Stark', 'Arya'), ('Stark', 'Robb'), ('Lannister', 'Jamie'), ('Targaryen', 'Daenerys'), ('Stark', 'Sansa'), ('Tyrell', 'Margaery'), ('Stark', 'Eddard'), ('Lannister', 'Tyrion'), ('Baratheon', 'Joffrey'), ('Bolton', 'Ramsey'), ('Baelish', 'Peter')] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(first_names, ['Jon', 'Cersei', 'Arya', 'Robb', 'Jamie', 'Daenerys', 'Sansa', 'Margaery', 'Eddard', 'Tyrion', 'Joffrey', 'Ramsey', 'Peter'], "Testing that first_names is correct.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+ + + +

Use list comprehension to create a list called lst2 that doubles each element in the list, lst.

+ +
+ + +lst = [["hi", "bye"], "hello", "goodbye", [9, 2], 4] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFiveA(self): + self.assertEqual(lst2, [['hi', 'bye', 'hi', 'bye'], 'hellohello', 'goodbyegoodbye', [9, 2, 9, 2], 8], "Testing that lst2 is assigned to correct values") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+ + + +

Below, we have provided a list of tuples that contain students' names and their final grades in PYTHON 101. Using list comprehension, create a new list passed that contains the names of students who passed the class (had a final grade of 70 or greater).

+ +
+ + +students = [('Tommy', 95), ('Linda', 63), ('Carl', 70), ('Bob', 100), ('Raymond', 50), ('Sue', 75)] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(passed, ['Tommy', 'Carl', 'Bob', 'Sue'], "Testing that passed is correct.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+ + + +

Write code using zip and filter so that these lists (l1 and l2) are combined into one big list and assigned to the variable opposites if they are both longer than 3 characters each.

+ +
+ + + +l1 = ['left', 'up', 'front'] +l2 = ['right', 'down', 'back'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(opposites, [('left','right'), ('front','back')], "Testing that opposites has the correct list of tuples.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+ + + +

Below, we have provided a species list and a population list. Use zip to combine these lists into one list of tuples called pop_info. From this list, create a new list called endangered that contains the names of species whose populations are below 2500.

+ +
+ + +species = ['golden retriever', 'white tailed deer', 'black rhino', 'brown squirrel', 'field mouse', 'orangutan', 'sumatran elephant', 'rainbow trout', 'black bear', 'blue whale', 'water moccasin', 'giant panda', 'green turtle', 'blue jay', 'japanese beetle'] + +population = [10000, 90000, 1000, 2000000, 500000, 500, 1200, 8000, 12000, 2300, 7500, 100, 1800, 9500, 125000] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(pop_info, [('golden retriever', 10000), ('white tailed deer', 90000), ('black rhino', 1000), ('brown squirrel', 2000000), ('field mouse', 500000), ('orangutan', 500), ('sumatran elephant', 1200), ('rainbow trout', 8000), ('black bear', 12000), ('blue whale', 2300), ('water moccasin', 7500), ('giant panda', 100), ('green turtle', 1800), ('blue jay', 9500), ('japanese beetle', 125000)], "Testing that pop_info was created correctly.") + def testTwo(self): + self.assertEqual(endangered, ['black rhino', 'orangutan', 'sumatran elephant', 'blue whale', 'giant panda', 'green turtle'], "Testing that endangered was created correctly.") + def testThree(self): + self.assertIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+
+ diff --git a/pretext/AdvancedAccumulation/Exercises.ptx b/pretext/AdvancedAccumulation/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/AdvancedAccumulation/Exercises.ptx @@ -0,0 +1,2 @@ + +

diff --git a/pretext/AdvancedAccumulation/filter.ptx b/pretext/AdvancedAccumulation/filter.ptx new file mode 100644 index 00000000..d27fa6e8 --- /dev/null +++ b/pretext/AdvancedAccumulation/filter.ptx @@ -0,0 +1,86 @@ + +

+ Filter +

Now consider another common pattern: going through a list and keeping only those items that meet certain criteria. + This is called a filter.

+ + +def keep_evens(nums): + new_list = [] + for num in nums: + if num % 2 == 0: + new_list.append(num) + return new_list + +print(keep_evens([3, 4, 6, 7, 0, 1])) + + +

Again, this pattern of computation is so common that Python offers a more compact and general way to do it, the filter + function. filter takes two arguments, a function and a sequence. The function takes one item and return True if the + item should. It is automatically called for each item in the sequence. You don't have to initialize an accumulator or + iterate with a for loop.

+ + +def keep_evens(nums): + new_seq = filter(lambda num: num % 2 == 0, nums) + return list(new_seq) + +print(keep_evens([3, 4, 6, 7, 0, 1])) + + +

+ Check Your Understanding +

+ + +

1. Write code to assign to the variable filter_testing all the elements in lst_check that have a w in them using filter.

+
+ + +lst_check = ['plums', 'watermelon', 'kiwi', 'strawberries', 'blueberries', 'peaches', 'apples', 'mangos', 'papaya'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(filter_testing, ['watermelon', 'kiwi', 'strawberries'], "Testing that filter_testing has the correct values.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+ + +

2. Using filter, filter lst so that it only contains words containing the letter o. Assign to variable lst2. Do not hardcode this.

+
+ + +lst = ["witch", "halloween", "pumpkin", "cat", "candy", "wagon", "moon"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(lst2, ['halloween', 'wagon', 'moon'], "Testing that lst is assigned to correct values.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+
diff --git a/pretext/AdvancedAccumulation/intro.ptx b/pretext/AdvancedAccumulation/intro.ptx new file mode 100644 index 00000000..4e707073 --- /dev/null +++ b/pretext/AdvancedAccumulation/intro.ptx @@ -0,0 +1,18 @@ + +
+ Introduction: Map, Filter, List Comprehensions, and Zip +

Let's revisit the . We have frequently taken a list and produced another list + from it that contains either a subset of the items or a transformed version of each item. When each item is transformed we + say that the operation is a mapping, or just a map of the original list. When some items are omitted, we call it a + filter.

+

Python provides built-in functions map and filter. Python also provides a new syntax, called + list comprehensions, that lets you express a mapping and/or filtering operation. Just as with named functions and + lambda expressions, some students seem to find it easier to think in terms of the map and filter functions, while other + students find it easier to read and write list comprehensions. You'll learn both ways; one may even help you understand + the other. Most python programmers use list comprehensions, so make sure you learn to read those. In this course, you can + choose to learn to write list comprehensions or to use map and filter, whichever you prefer. You should learn to read both + list comprehensions and map/filter.

+

Other common accumulator patterns on lists aggregate all the values into a single value.

+

Map, and filter are commands that you would use in high-performance computing on big datasets. + See MapReduce on Wikipedia.

+
diff --git a/pretext/AdvancedAccumulation/listcomp.ptx b/pretext/AdvancedAccumulation/listcomp.ptx new file mode 100644 index 00000000..f339b7d5 --- /dev/null +++ b/pretext/AdvancedAccumulation/listcomp.ptx @@ -0,0 +1,158 @@ + +
+ List Comprehensions +

Python provides an alternative way to do map and filter operations, called a list comprehension. + Many programmers find them easier to understand and write. List comprehensions are concise ways to create lists from other + lists. The general syntax is:

+
[<transformer_expression> for <loop_var> in <sequence> if <filtration_expression>]
+

where the if clause is optional. For example,

+ + +things = [2, 5, 9] + +yourlist = [value * 2 for value in things] + +print(yourlist) + + +

The transformer expression is value * 2. The item variable is value and the sequence is things. This is an alternative way + to perform a mapping operation. As with map, each item in the sequence is transformed into an item in the new list. + Instead of the iteration happening automatically, however, we have adopted the syntax of the for loop which may make it + easier to understand.

+

Just as in a regular for loop, the part of the statement for value in things says to execute some code once for each + item in things. Each time that code is executed, value is bound to one item from things. The code that is executed + each time is the transformer expression, value * 2, rather than a block of code indented underneath the for + statement. The other difference from a regular for loop is that each time the expression is evaluated, the resulting value + is appended to a list. That happens automatically, without the programmer explicitly initializing an empty list or + appending each item.

+

The if clause of a list comprehension can be used to do a filter operation. To perform a pure filter operation, the + expression can be simply the variable that is bound to each item. For example, the following list comprehension will keep + only the even numbers from the original list.

+ + +def keep_evens(nums): + new_list = [num for num in nums if num % 2 == 0] + return new_list + +print(keep_evens([3, 4, 6, 7, 0, 1])) + + +

You can also combine map and filter operations by chaining them together, or with a single list comprehension.

+ + +things = [3, 4, 6, 7, 0, 1] +#chaining together filter and map: +# first, filter to keep only the even numbers +# double each of them +print(map(lambda x: x*2, filter(lambda y: y % 2 == 0, things))) + +# equivalent version using list comprehension +print([x*2 for x in things if x % 2 == 0]) + + +

+ Check your understanding +

+ + +

What is printed by the following statements?

+ + +alist = [4,2,8,6,5] +blist = [num*2 for num in alist if num%2==1] +print(blist) + + +
+ + + +

[4,2,8,6,5]

+
+ +

Items from alist are doubled before being placed in blist.

+
+
+ + +

[8,4,16,12,10]

+
+ +

Not all the items in alist are to be included in blist. Look at the if clause.

+
+
+ + +

10

+
+ +

The result needs to be a list.

+
+
+ + +

[10]

+
+ +

Yes, 5 is the only odd number in alist. It is doubled before being placed in blist.

+
+
+
+
+ + +

2. The for loop below produces a list of numbers greater than 10. Below the given code, use list comprehension to accomplish the same thing. Assign it the the variable lst2. Only one line of code is needed.

+
+ + +L = [12, 34, 21, 4, 6, 9, 42] +lst = [] +for x in L: + if x > 10: + lst.append(x) +print(lst) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFourA(self): + self.assertEqual(lst2, [12, 34, 21, 42], "Testing that lst2 is assigned to correct values") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+ + +

3. Write code to assign to the variable compri all the values of the key name in any of the sub-dictionaries in the dictionary tester. Do this using a list comprehension.

+
+ + +tester = {'info': [{"name": "Lauren", 'class standing': 'Junior', 'major': "Information Science"},{'name': 'Ayo', 'class standing': "Bachelor's", 'major': 'Information Science'}, {'name': 'Kathryn', 'class standing': 'Senior', 'major': 'Sociology'}, {'name': 'Nick', 'class standing': 'Junior', 'major': 'Computer Science'}, {'name': 'Gladys', 'class standing': 'Sophomore', 'major': 'History'}, {'name': 'Adam', 'major': 'Violin Performance', 'class standing': 'Senior'}]} + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(compri), sorted(['Lauren', 'Ayo', 'Kathryn', 'Nick', 'Gladys', 'Adam']), "Testing that compri has the correct values.") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+
diff --git a/pretext/AdvancedAccumulation/map.ptx b/pretext/AdvancedAccumulation/map.ptx new file mode 100644 index 00000000..31287b4f --- /dev/null +++ b/pretext/AdvancedAccumulation/map.ptx @@ -0,0 +1,141 @@ + +
+ Map +

You previously were introduced to accumulating a list by transforming each of the elements. Here we revisit that pattern.

+

The following function produces a new list with each item in the original list doubled. It is an example of a mapping, + from the original list to a new list of the same length, where each element is doubled.

+ + +def doubleStuff(a_list): + """ Return a new list in which contains doubles of the elements in a_list. """ + new_list = [] + for value in a_list: + new_elem = 2 * value + new_list.append(new_elem) + return new_list + +things = [2, 5, 9] +print(things) +things = doubleStuff(things) +print(things) + + +

The doubleStuff function is an example of the accumulator pattern, in particular the mapping pattern. On line 3, + new_list is initialized. On line 5, the doubled value for the current item is produced and on line 6 it is appended to + the list we're accumulating. Line 7 executes after we've processed all the items in the original list: it returns the + new_list. Once again, codelens helps us to see the actual references and objects as they are passed and returned.

+ + +def doubleStuff(a_list): + """ Return a new list in which contains doubles of the elements in a_list. """ + new_list = [] + for value in a_list: + new_elem = 2 * value + new_list.append(new_elem) + return new_list + +things = [2, 5, 9] +things = doubleStuff(things) + + +

This pattern of computation is so common that python offers a more general way to do mappings, the map function, that + makes it more clear what the overall structure of the computation is. map takes two arguments, a function and a + sequence. The function is the mapper that transforms items. It is automatically applied to each item in the sequence. You + don't have to initialize an accumulator or iterate with a for loop at all.

+ +

Technically, in a proper Python 3 interpreter, the map function produces an iterator, which is like a list but + produces the items as they are needed. Most places in Python where you can use a list (e.g., in a for loop) you can + use an iterator as if it was actually a list. So you probably won't ever notice the difference. If you ever really + need a list, you can explicitly turn the output of map into a list: list(map(...)). In the runestone environment, map actually returns a real list, but to make this code compatible with a full python environment, we always convert it to a list.

+
+

As we did when passing a function as a parameter to the sorted function, we can specify a function to pass to map + either by referring to a function by name, or by providing a lambda expression.

+ + +def triple(value): + return 3*value + +def tripleStuff(a_list): + new_seq = map(triple, a_list) + return list(new_seq) + +def quadrupleStuff(a_list): + new_seq = map(lambda value: 4*value, a_list) + return list(new_seq) + +things = [2, 5, 9] +things3 = tripleStuff(things) +print(things3) +things4 = quadrupleStuff(things) +print(things4) + + +

Of course, once we get used to using the map function, it's no longer necessary to define functions like + tripleStuff and quadrupleStuff.

+ + +things = [2, 5, 9] + +things4 = map((lambda value: 4*value), things) +print(list(things4)) + +# or all on one line +print(list(map((lambda value: 5*value), [1, 2, 3]))) + + +

+ Check Your Understanding +

+ + +

1. Using map, create a list assigned to the variable greeting_doubled that doubles each element in the list lst.

+
+ + +lst = [["hi", "bye"], "hello", "goodbye", [9, 2], 4] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(greeting_doubled, [['hi', 'bye', 'hi', 'bye'], 'hellohello', 'goodbyegoodbye', [9, 2, 9, 2], 8], "Testing that greeting_doubled is assigned to correct values") + self.assertIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+ + +

2. Below, we have provided a list of strings called abbrevs. Use map to produce a new list called abbrevs_upper that contains all the same strings in upper case.

+
+ + +abbrevs = ["usa", "esp", "chn", "jpn", "mex", "can", "rus", "rsa", "jam"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(abbrevs_upper, ["USA", "ESP", "CHN", "JPN", "MEX", "CAN", "RUS", "RSA", "JAM"], "Testing that abbrevs_upper is correct.") + self.assertIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
+
diff --git a/pretext/AdvancedAccumulation/toctree.ptx b/pretext/AdvancedAccumulation/toctree.ptx new file mode 100644 index 00000000..444f129e --- /dev/null +++ b/pretext/AdvancedAccumulation/toctree.ptx @@ -0,0 +1,11 @@ + + + More on Accumulation: Map, Filter, List Comprehension, and Zip + + + + + + + + diff --git a/pretext/AdvancedAccumulation/zip.ptx b/pretext/AdvancedAccumulation/zip.ptx new file mode 100644 index 00000000..e5d17812 --- /dev/null +++ b/pretext/AdvancedAccumulation/zip.ptx @@ -0,0 +1,161 @@ + +
+ Zip +

One more common pattern with lists, besides accumulation, is to step through a pair of lists (or several lists), doing + something with all of the first items, then something with all of the second items, and so on. For example, given two + lists of numbers, you might like to add them up pairwise, taking [3, 4, 5] and [1, 2, 3] to yield [4, 6, 8].

+

One way to do that with a for loop is to loop through the possible index values.

+ + +L1 = [3, 4, 5] +L2 = [1, 2, 3] +L3 = [] + +for i in range(len(L1)): + L3.append(L1[i] + L2[i]) + +print(L3) + + +

You have seen this idea previously for iterating through the items in a single list. In many other programming languages + that's really the only way to iterate through the items in a list. In Python, however, we have gotten used to the for loop + where the iteration variable is bound successively to each item in the list, rather than just to a number that's used as a + position or index into the list.

+

Can't we do something similar with pairs of lists? It turns out we can.

+

The zip function takes multiple lists and turns them into a list of tuples (actually, an iterator, but they work like + lists for most practical purposes), pairing up all the first items as one tuple, all the second items as a tuple, and so + on. Then we can iterate through those tuples, and perform some operation on all the first items, all the second items, and + so on.

+ + +L1 = [3, 4, 5] +L2 = [1, 2, 3] +L4 = list(zip(L1, L2)) +print(L4) + + +

Here's what happens when you loop through the tuples.

+ + +L1 = [3, 4, 5] +L2 = [1, 2, 3] +L3 = [] +L4 = list(zip(L1, L2)) + +for (x1, x2) in L4: + L3.append(x1+x2) + +print(L3) + + +

Or, simplifying and using a list comprehension:

+ + +L1 = [3, 4, 5] +L2 = [1, 2, 3] +L3 = [x1 + x2 for (x1, x2) in list(zip(L1, L2))] +print(L3) + + +

Or, using map and not unpacking the tuple (our online environment has trouble with unpacking the tuple in a lambda expression):

+ + +L1 = [3, 4, 5] +L2 = [1, 2, 3] +L3 = map(lambda x: x[0] + x[1], zip(L1, L2)) +print(L3) + + +

Consider a function called possible, which determines whether a word is still possible to play in a game of hangman, given the guesses that have been made and the current state of the blanked word.

+

Below we provide function that fulfills that purpose.

+ + +def possible(word, blanked, guesses_made): + if len(word) != len(blanked): + return False + for i in range(len(word)): + bc = blanked[i] + wc = word[i] + if bc == '_' and wc in guesses_made: + return False + elif bc != '_' and bc != wc: + return False + return True + +print(possible("wonderwall", "_on__r__ll", "otnqurl")) +print(possible("wonderwall", "_on__r__ll", "wotnqurl")) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(possible("HELLO", "_ELL_", "ELJ"), True, "Testing whether possible has been correctly defined.") + self.assertEqual(possible("HELLO", "_ELL_", "ELJH"), False, "Testing whether possible has been correctly defined.") + self.assertEqual(possible("HELLO", "_E___", "ELJ"), False, "Testing whether possible has been correctly defined.") + +myTests().main() + + +

However, we can rewrite that using zip, to be a little more comprehensible.

+ + +def possible(word, blanked, guesses_made): + if len(word) != len(blanked): + return False + for (bc, wc) in zip(blanked, word): + if bc == '_' and wc in guesses_made: + return False + elif bc != '_' and bc != wc: + return False + return True + +print(possible("wonderwall", "_on__r__ll", "otnqurl")) +print(possible("wonderwall", "_on__r__ll", "wotnqurl")) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(possible("HELLO", "_ELL_", "ELJ"), True, "Testing whether possible has been correctly defined.") + self.assertEqual(possible("HELLO", "_ELL_", "ELJH"), False, "Testing whether possible has been correctly defined.") + self.assertEqual(possible("HELLO", "_E___", "ELJ"), False, "Testing whether possible has been correctly defined.") + +myTests().main() + + +

+ Check Your Understanding +

+ + +

1. Below we have provided two lists of numbers, L1 and L2. Using zip and list comprehension, create a new list, L3, that sums the two numbers if the number from L1 is greater than 10 and the number from L2 is less than 5. This can be accomplished in one line of code.

+
+ + +L1 = [1, 5, 2, 16, 32, 3, 54, 8, 100] +L2 = [1, 3, 10, 2, 42, 2, 3, 4, 3] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testSix(self): + self.assertEqual(L3, [18, 57, 103], "Testing that L3 is assigned to correct values") + self.assertNotIn('map(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('filter(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('sum(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('zip(', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
+
diff --git a/pretext/AdvancedFunctions/Anonymousfunctionswithlambdaexpressions.ptx b/pretext/AdvancedFunctions/Anonymousfunctionswithlambdaexpressions.ptx new file mode 100644 index 00000000..7eb3e331 --- /dev/null +++ b/pretext/AdvancedFunctions/Anonymousfunctionswithlambdaexpressions.ptx @@ -0,0 +1,100 @@ + +
+ Anonymous functions with lambda expressions +

To further drive home the idea that we are passing a function object as a parameter to the sorted object, + let's see an alternative notation for creating a function, a lambda expression. The syntax of a lambda + expression is the word lambda followed by parameter names, separated by commas but not inside (parentheses), + followed by a colon and then an expression. lambda arguments: expression yields a function object. This + unnamed object behaves just like the function object constructed below.

+ + +def fname(arguments): + return expression + + + image showing how elements of a lambda expression are like a function definition. +

Consider the following code

+ + +def f(x): + return x - 1 + +print(f) +print(type(f)) +print(f(3)) + +print(lambda x: x-2) +print(type(lambda x: x-2)) +print((lambda x: x-2)(6)) + + +

Note the paralells between the two. At line 4, f is bound to a function object. Its printed representation + is <function f>. At line 8, the lambda expression produces a function object. Because it is unnamed (anonymous), + its printed representation doesn't include a name for it, <function <lambda>>. Both are of type ‘function'.

+

A function, whether named or anonymous, can be called by placing parentheses () after it. + In this case, because there is one parameter, there is one value in parentheses. This + works the same way for the named function and the anonymous function produced by the lambda + expression. The lambda expression had to go in parentheses just for the purposes + of grouping all its contents together. Without the extra parentheses around it on line 10, + the interpreter would group things differently and make a function of x that returns x - 2(6).

+

Some students find it more natural to work with lambda expressions than to refer to a function + by name. Others find the syntax of lambda expressions confusing. It's up to you which version you want to + use though you will need to be able to read and understand lambda expressions that are written by others. + In all the examples below, both ways of doing it will be illustrated.

+

Say we want to create a function that takes a string and returns the last character in that string. What might this look + like with the functions you've used before?

+ + +def last_char(s): + return s[-1] + + +

To re-write this using lambda notation, we can do the following:

+ + +last_char = (lambda s: s[-1]) + + +

Note that neither function is actually invoked. Look at the parallels between the two structures. The parameters are + defined in both functions with the variable s. In the typical function, we have to use the keyword return to send + back the value. In a lambda function, that is not necessary - whatever is placed after the colon is what will be returned.

+

+ Check Your Understanding +

+ + +

If the input to this lambda function is a number, what is returned?

+ + +(lambda x: -x) + + +
+ + + +

A string with a - in front of the number.

+
+ +

The number would be assigned to the variable x and there is no type conversion used here, so the number would stay a number.

+
+
+ + +

A number of the opposite sign (positive number becomes negative, negative becomes positive).

+
+ +

Correct!

+
+
+ + +

Nothing is returned because there is no return statement.

+
+ +

Remember, lambda functions do not use return statements.

+
+
+
+
+
diff --git a/pretext/AdvancedFunctions/ChapterAssessment.ptx b/pretext/AdvancedFunctions/ChapterAssessment.ptx new file mode 100644 index 00000000..64c7f397 --- /dev/null +++ b/pretext/AdvancedFunctions/ChapterAssessment.ptx @@ -0,0 +1,158 @@ + +
+ Chapter Assessment + + +

Create a function called mult that has two parameters, the first is required and should be an integer, the second is an optional parameter that can either be a number or a string but whose default is 6. The function should return the first parameter multiplied by the second.

+
+ + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(mult(2), 12, "Testing that mult returns the correct value on input (2)") + self.assertEqual(mult(5,3), 15, "Testing that mult returns the correct value on input (3,5)") + self.assertEqual(mult(4,"hello"), "hellohellohellohello", "testing that mult returns the correct value on input (4, 'hello'") + +myTests().main() + + +
+ + +

The following function, greeting, does not work. Please fix the code so that it runs without error. This only requires one change in the definition of the function.

+
+ + +def greeting(greeting="Hello ", name, excl="!"): + return greeting + name + excl + +print(greeting("Bob")) +print(greeting("")) +print(greeting("Bob", excl="!!!")) +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(greeting("Bob"), "Hello Bob!", "Testing that greeting('Bob') returns 'Hello Bob!'.") + self.assertEqual(greeting(""), "Hello !", "Testing that greeting('') return 'Hello !'.") + +myTests().main() + + +
+ + +

Below is a function, sum, that does not work. Change the function definition so the code works. The function should still have a required parameter, intx, and an optional parameter, intz with a defualt value of 5.

+
+ + +def sum(intz=5, intx): + return intz + intx + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sum(8, intz = 2), 10, "Testing the function sum on inputs 8, 2.") + self.assertEqual(sum(12), 17, "Testing the function sum on input 12.") + +myTests().main() + + +
+ + +

Write a function, test, that takes in three parameters: a required integer, an optional boolean whose default value is True, and an optional dictionary, called dict1, whose default value is {2:3, 4:5, 6:8}. If the boolean parameter is True, the function should test to see if the integer is a key in the dictionary. The value of that key should then be returned. If the boolean parameter is False, return the boolean value False.

+
+ + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(test(2), 3, "Testing that test(2) returns 3") + self.assertEqual(test(4, False), False, "Testing that test(4, False) returns False") + self.assertEqual(test(5, dict1 = {5:4, 2:1}), 4, "Testing that test(5, dict1 = {5:4, 2:1}) returns 4") + +myTests().main() + + +
+ + +

Write a function called checkingIfIn that takes three parameters. The first is a required parameter, which should be a string. The second is an optional parameter called direction with a default value of True. The third is an optional parameter called d that has a default value of {'apple': 2, 'pear': 1, 'fruit': 19, 'orange': 5, 'banana': 3, 'grapes': 2, 'watermelon': 7}. Write the function checkingIfIn so that when the second parameter is True, it checks to see if the first parameter is a key in the third parameter; if it is, return True, otherwise return False.

+

But if the second paramter is False, then the function should check to see if the first parameter is not a key of the third. If it's not, the function should return True in this case, and if it is, it should return False.

+
+ + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(checkingIfIn('grapes'), True, "Testing that checkingIfIn returns the correct boolean on input 'grapes'") + self.assertEqual(checkingIfIn('carrots'), False, "Testing that checkingIfIn returns the correct boolean on input 'carrots'") + self.assertEqual(checkingIfIn('grapes', False), False, "Testing that checkingIfIn returns the correct boolean on input ('grapes', False)") + self.assertEqual(checkingIfIn('carrots', False), True, "Testing that checkingIfIn returns the correct boolean on input ('carrots', False)") + self.assertEqual(checkingIfIn('grapes', d = {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1}), False, "Testing that checkingIfIn returns the correct boolean on input ('grapes', d = {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1})") + self.assertEqual(checkingIfIn('peas', d = {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1}), True, "Testing that checkingIfIn returns the correct boolean on input ('peas', d = {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1})") + self.assertEqual(checkingIfIn('peas', False, {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1}), False, "Testing that checkingIfIn returns the correct boolean on input ('peas', False, {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1})") + self.assertEqual(checkingIfIn('apples', False, {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1}), True, "Testing that checkingIfIn returns the correct boolean on input ('apples', False, {'carrots': 1, 'peas': 9, 'potatos': 8, 'corn': 32, 'beans': 1})") + +myTests().main() + + +
+ + +

We have provided a function below and the skeleton of three invocations of the function. Fill in the parameters of the invocations to produce the specified outputs

+
+ + +def f(x, y = 3, z = 7): + return ("{} {} {}".format(x, y, z)) + +# fill in just one parameter value to make val1 have the value "Hi 3 7" +val1 = f() +# fill in two parameter values to make val2 have the value "Hi Hi 7" +val2 = f() +# fill in two parameters to make vale have the value "Hi 3 Hi" +val3 = f() + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(val1, "Hi 3 7", "Testing that val1 has the correct value") + def testTwo(self): + self.assertEqual(val2, "Hi Hi 7", "Testing that val2 has the correct value") + def testThree(self): + self.assertEqual(val3, "Hi 3 Hi", "Testing that val3 has the correct value") + ### would be good to define additional tests that check to make sure student is only suppplying minimum number of parameter values + + +myTests().main() + + +
+
diff --git a/pretext/AdvancedFunctions/Exercises.ptx b/pretext/AdvancedFunctions/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/AdvancedFunctions/Exercises.ptx @@ -0,0 +1,2 @@ + +

diff --git a/pretext/AdvancedFunctions/KeywordParameters.ptx b/pretext/AdvancedFunctions/KeywordParameters.ptx new file mode 100644 index 00000000..ae251f04 --- /dev/null +++ b/pretext/AdvancedFunctions/KeywordParameters.ptx @@ -0,0 +1,2 @@ + + diff --git a/pretext/AdvancedFunctions/MethodInvocations.ptx b/pretext/AdvancedFunctions/MethodInvocations.ptx new file mode 100644 index 00000000..87ecf737 --- /dev/null +++ b/pretext/AdvancedFunctions/MethodInvocations.ptx @@ -0,0 +1,49 @@ + +

+ Method Invocations + +

This section is a review of material you have already seen, but it may be helpful to look at it again now that you're focusing on functions and function calls.

+
+

There is one other special type of function called a method, which is invoked slightly differently. Some + object types have methods defined for them. You have already seen some methods that operate on strings (e.g., + find, index, split, join) and on lists (e.g., append, pop).

+

We will not learn about how to define methods until later in the course, when we cover Classes. But it's worth getting a + basic understanding now of how methods are invoked. To invoke a method, the syntax is + <expr>.<methodname>(<additional parameter values>).

+

The expression to the left of the dot should evaluate to an object of the correct type, an object for which <methodname> + is defined. The method will be applied to that object (that object will be a parameter value passed to the + function/method.) If the method takes additional parameters (some do, some don't), additional expressions that evaluate + to values are included inside the parentheses.

+

For example, let's look at an invocation of the split method.

+ + +y = "This is a sentence" +z = y.split() +print(type(z)) +print(len(z)) +print(z) +for w in z: + print(w) + + +

The split method operates on a string. Because it is a method rather than a regular function, the string it operates on + appears to the left of the period, rather than inside the parentheses. The split method always returns a list. On line + 2, that returned value is assigned to the variable z.

+

The split method actually takes an optional extra parameter. If no value is provided inside the parentheses, the split + method chops up the list whenever it encounters a whitespace (a space, a tab, or a newline). But you can specifying a + character or character string to split on. Try putting s inside the parentheses on line 2 above, make a prediction + about what the output will be, and then check it. Try some other things inside the parentheses.

+

Note that the thing to the left of the period can be any expression, not just a variable name. It can even be a return + value from some other function call or method invocation. For example, if we want to remove the s and t characters from + a string, we can do it all on one line as show below.

+ + +print("This is a sentence".replace("s", "").replace("t", "")) + + +

What's going on there? Start reading left to right. This is a sentence is a string, and the replace method is invoked + on it. Two additional parameter values are provided, s, and an empty string. So, in the sentence, all occurrences of + s are replaced with the empty string. A new string is returned, Thi i a entence. There is another period followed + by the word replace, so the replace method is called again on that string, returning the shorter string, which is + printed.

+
diff --git a/pretext/AdvancedFunctions/OptionalParameters.ptx b/pretext/AdvancedFunctions/OptionalParameters.ptx new file mode 100644 index 00000000..953074bc --- /dev/null +++ b/pretext/AdvancedFunctions/OptionalParameters.ptx @@ -0,0 +1,209 @@ + +
+ Introduction: Optional Parameters +

In the treatment of functions so far, each function definition specifies zero or more formal parameters + and each function invocation provides exactly that many values. Sometimes it is convenient to have + optional parameters that can be specified or omitted. When an optional parameter is omitted from a function invocation, the formal parameter is bound to a default value. When the optional parameter is included, then + the formal parameter is bound to the value provided. Optional parameters are convenient when a function is + almost always used in a simple way, but it's nice to allow it to be used in a more complex way, with non-default + values specified for the optional parameters.

+

Consider, for example, the int function, which you have used previously. Its first parameter, + which is required, specifies the object that you wish to convert to an integer. For example, if you + call in on a string, int("100"), the return value will be the integer 100.

+

That's the most common way programmers want to convert strings to integers. Sometimes, however, they + are working with numbers in some other base rather than base 10. For example, in base 8, the rightmost + digit says how many ones, the next digit to the left says how many 8s, and the one to the left of that says how many 64s (64 is 8 squared).

+ +

New Math

+

Some math educators believe that elementary school students will get a much deeper understanding + of the place-value system, and set a foundation for learning algebra later, if they learn to do + arithmetic not only in base-10 but also in base-8 and other bases. This was part of a movement + called New Math, though it's not so new now. It was popular in the 1960s and 1970s in the USA. One of the authors of this textbook (Resnick) had some version of it in elementary school and credits it with ruining his mind, in a good way. Tom + Lehrer wrote a really funny song about it in 1965, and it's now set with visuals in several YouTube renditions. Try this very nice lip-synched version.

+
+

The int function provides an optional parameter for the base. When it is not specified, the number is + converted to an integer assuming the original number was in base 10. We say that 10 is the default value. + So int("100") is the same as invoking int("100", 10). We can override the default of 10 by + supplying a different value.

+ + +print(int("100")) +print(int("100", 10)) # same thing, 10 is the default value for the base +print(int("100", 8)) # now the base is 8, so the result is 1*64 = 64 + + +

When defining a function, you can specify a default value for a parameter. That parameter then becomes an + optional parameter when the function is called. The way to specify a default value is with an assignment + statement inside the parameter list. Consider the following code, for example.

+ + +initial = 7 +def f(x, y =3, z=initial): + print("x, y, z, are: " + str(x) + ", " + str(y) + ", " + str(z)) + +f(2) +f(2, 5) +f(2, 5, 8) + + +

Notice the different bindings of x, y, and z on the three invocations of f. The first time, y and z have + their default values, 3 and 7. The second time, y gets the value 5 that is passed in, but z still gets the + default value of 7. The last time, z gets the value 8 that is passed in.

+

If you want to provide a non-default value for the third parameter (z), you also need to provide a value + for the second item (y). We will see in the next section a mechanism called keyword parameters that lets you + specify a value for z without specifying a value for y.

+ +

This is a second, related but slightly different use of = than we have seen previously. In a stand-alone assignment statement, not part of a function definition, y=3 assigns 3 to the variable y. As part of specifying the parameters in a function definition, y=3 says that 3 is the default value for y, used only when no value is provided during the function invocation.

+
+

There are two tricky things that can confuse you with default values. The first is that the default + value is determined at the time that the function is defined, not at the time that it is invoked. So + in the example above, if we wanted to invoke the function f with a value of 10 for z, we cannot simply + set initial = 10 right before invoking f. See what happens in the code below, where z still gets the + value 7 when f is invoked without specifying a value for z.

+ + +initial = 7 +def f(x, y =3, z=initial): + print("x, y, z, are: " + str(x) + ", " + str(y) + ", " + str(z)) + +initial = 10 +f(2) + + +

The second tricky thing is that if the default value is set to a mutable object, such as a list or a dictionary, + that object will be shared in all invocations of the function. This can get very confusing, so I suggest that you + never set a default value that is a mutable object. For example, follow the execution of this one carefully.

+ + +def f(a, L=[]): + L.append(a) + return L + +print(f(1)) +print(f(2)) +print(f(3)) +print(f(4, ["Hello"])) +print(f(5, ["Hello"])) + + +

When the default value is used, the same list is shared. But on lines 8 and 9 two different copies of the list + [Hello] are provided, so the 4 that is appended is not present in the list that is printed on line 9.

+

+ Check your understanding +

+ + +

What will the following code print?

+ + +def f(x = 0, y = 1): + return x * y + +print(f()) + + +
+ + + +

0

+
+ +

Since no parameters are specified, x is 0 and y is 1, so 0 is returned.

+
+
+ + +

1

+
+ +

0 * 1 is 0.

+
+
+ + +

None

+
+ +

The function does return a value.

+
+
+ + +

Runtime error since no parameters are passed in the call to f.

+
+ +

Because both parameters have default values specified in the definition, they are both optional.

+
+
+
+
+ + +

What will the following code print?

+ + +def f(x = 0, y = 1): + return x * y + +print(f(1)) + + +
+ + + +

0

+
+ +

Since one parameter value is specified, it is bound to x; y gets the default value of 1.

+
+
+ + +

1

+
+ +

Since one parameter value is specified, it is bound to x; y gets the default value of 1.

+
+
+ + +

None

+
+ +

The function does return a value.

+
+
+ + +

Runtime error since the second parameter value is missing.

+
+ +

Because both parameters have default values specified in the definition, they are both optional.

+
+
+
+
+ + +

3. Write a function called str_mult that takes in a required string parameter and an optional integer parameter. The default value for the integer parameter should be 3. The function should return the string multiplied by the integer parameter.

+
+ + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(str_mult("ha"), "hahaha", "Testing that str_mult('ha') returns 'hahaha'") + self.assertEqual(str_mult("ha", 10), "hahahahahahahahahaha", "Testing that str_mult('ha') returns 'hahahahahahahahahaha'") + self.assertEqual(str_mult("ha", 0), "", "Testing that str_mult('ha', 0) returns ''") + +myTests().main() + + +
+
diff --git a/pretext/AdvancedFunctions/ProgrammingWithStyle.ptx b/pretext/AdvancedFunctions/ProgrammingWithStyle.ptx new file mode 100644 index 00000000..857e8dfd --- /dev/null +++ b/pretext/AdvancedFunctions/ProgrammingWithStyle.ptx @@ -0,0 +1,31 @@ + +
+ 👩‍💻 Programming With Style +

Readability is very important to programmers, since in practice programs are + read and modified far more often then they are written.

+ + + +

We'll have more to say about style as our programs become more complex, but a + few pointers will be helpful already:

+

+

+

+
diff --git a/pretext/AdvancedFunctions/toctree.ptx b/pretext/AdvancedFunctions/toctree.ptx new file mode 100644 index 00000000..8c74e942 --- /dev/null +++ b/pretext/AdvancedFunctions/toctree.ptx @@ -0,0 +1,11 @@ + + + Advanced Functions + + + + + + + + diff --git a/pretext/BuildingPrograms/Exercises.ptx b/pretext/BuildingPrograms/Exercises.ptx new file mode 100644 index 00000000..82e0d9f5 --- /dev/null +++ b/pretext/BuildingPrograms/Exercises.ptx @@ -0,0 +1,13 @@ + + + Exercises +

There may be some contributed Exercises

+ + Contributed Exercises + {% for q in questions: %} + <div class='oneq full-width'> + {{ q['htmlsrc']|safe }} + </div> +{% endfor %} + +
diff --git a/pretext/BuildingPrograms/TheStrategy.ptx b/pretext/BuildingPrograms/TheStrategy.ptx new file mode 100644 index 00000000..8160911a --- /dev/null +++ b/pretext/BuildingPrograms/TheStrategy.ptx @@ -0,0 +1,78 @@ + +
+ Building A Program: A Strategy +

Building on lessons learned in the first debugging interlude, this chapter offers a strategy for writing a program to solve a problem such as those that appear in the exercises at the ends of the chapters in this book. (A similar approach is helpful for writing larger programs, but that will come later.)

+ + Warning. +

You may find it tempting to start an exercise by copying and pasting a snippet of code from somewhere in the textbook, and hoping that a small edit will lead to a solution to the current problem. Often this will lead to frustration and confusion; after trying a few code substitutions that feel vaguely familiar to you, you'll find the code looking kind of complicated and the outputs baffling.

+

Copying and editing snippets of code is actually a useful element of the strategy we outline below. But it comes a little later in the process, not as the first thing. And it requires a fair bit of work to make sure you understand the code snippet that you've copied. Only then will you be able to find the right small edits to the code snippet to make it do what you want.

+
+

There are three basic steps to the strategy we recommend: Outline; Code One Section at a Time; Clean Up.

+ + Sketch an Outline +

We are suggesting you first write down all the steps you want the program to do. You can do this in any manner you like. We are going to + show you how to outline using comments, but if you are more visual you might want to sketch on a piece of paper and if you are more + spatial try walking around the room. The big trick is to understand everything you want to do first in your own words, so then you are + translating them to the computer.

+
+ + Code One Section at a Time +

After you outline your program, you should write code one section at a time, and carefully test that section before you go on. The idea here is to make sure your program is doing what you think it's doing at each stage.

+

Translating your English description of a step into code may be the most challenging step for you early in your learning about programming. Later it will come more naturally. Here is a checklist of questions that you may find useful in trying to find the right python code to express your idea, based on what you've learned so far:

+

+

+

+
for <varname> in <seq>:
+                <code block line 1>
+                <code block line 2>
+                ...
+

+

+

+
if <boolean exp>:
+  <if block here>
+  ...
+else:
+  <else block here>
+  ...
+

+

+

+
#initialize accumulator
+a = <initial value>
+
+for <varname> in <seq>:
+  <some code in for block>
+  a = <new_value>
+  <other code in for block>
+print(a)
+

Finally, you may be reminded of a snippet of code somewhere in the textbook that did something similar to what you want to do. Now is the time to copy and edit that code. But wait! Before you start editing that code snippet, make sure you understand it. See the section below on understanding code.

+
+ + Clean Up +

When you are done with outlining and testing your program, delete any diagnostic print statements from your program. No one really needs to see the test statements you wrote, and leaving test statements in the program might confuse you if you add more to the program.

+

Extra comments do help other people read your code, but try to leave in only the bits that you think are useful. There is an art to writing good informative comments, and you can only learn this art by reading other people's programs and having your peers read your programs. As a rule of thumb for comments, when in doubt, keep it; it you're worried it won't make sense to you or someone else later, add more detail to it.

+

In the next few pages, we'll go through this process using a question similar to something that you may have already seen before.

+
+
diff --git a/pretext/BuildingPrograms/WPCleanCode.ptx b/pretext/BuildingPrograms/WPCleanCode.ptx new file mode 100644 index 00000000..cfde4240 --- /dev/null +++ b/pretext/BuildingPrograms/WPCleanCode.ptx @@ -0,0 +1,42 @@ + +
+ 👩‍💻 Clean Up +

Congrats! We've solved the problem now, but our code isn't very nice to read. We can clean it up now and remove the print statements.

+ + +# initialize a dictionary +user_dictionary = {} + +# write a for loop that will iterate five times. I can use the range function for this! +for _ in range(5): + # in the for loop, I should ask for input from the user + response = input("Please enter two words to add to a dictionary. The first word is the definition, the second will be the word associated with it.") + + # next, I should separate the words + separated_response = response.split() + response_key = separated_response[0] + response_value = separated_response[1] + + # finally, I should add the key value pair to the dictionary + user_dictionary[response_key] = response_value + + +

We can also fix the comments so that they aren't so obvious.

+ + +user_dictionary = {} + +# asks a user for two words to add to the user dictionary - will do this five times. +# the first word will be the key, the second word will be the value. +for _ in range(5): + response = input("Please enter two words to add to a dictionary. The first word is the definition, the second will be the word associated with it.") + + separated_response = response.split() + response_key = separated_response[0] + response_value = separated_response[1] + + user_dictionary[response_key] = response_value + + +

At this point, the code has been cleaned up fully - you could easily write the comments in a different way but this should be easy for other programmers to understand, and ourselves to understand if we come back to the code days, weeks, or months later!

+
diff --git a/pretext/BuildingPrograms/WPCodeSectionataTime.ptx b/pretext/BuildingPrograms/WPCodeSectionataTime.ptx new file mode 100644 index 00000000..17b5c704 --- /dev/null +++ b/pretext/BuildingPrograms/WPCodeSectionataTime.ptx @@ -0,0 +1,127 @@ + +
+ 👩‍💻 Code one section at a time +

As a reminder, this is our prompt:

+

Build a program that replicates a physical dictionary that you might use. The program should that take five different input from the user. Each input will have two words and we will build a dictionary where the words are the keys and values.

+

We'll start to build up the sections one at a time now! First, we need to pick a name for the dictionary. We'll try to pick a clear name for each of these variables

+ + +# initialize a dictionary +user_dictionary = {} +print("---------- keys in user_dictionary: " + str(list(user_dictionary.keys())) + " ----------") + +# write a for loop that will iterate five times. I can use the range function for this! + +# in the for loop, I should ask for input from the user + +# next, I should separate the words + +# finally, I should add the key value pair to the dictionary + + +

We picked the variable name user_dictionary because it will be a dictionary that is created by a user. Other names could be + appropriate as well! Though it may seem unnecessary, we'll add a print statement to remind ourself that user_dictionary is empty.

+

Next we'll build up the for loop!

+ + +# initialize a dictionary +user_dictionary = {} +print("---------- keys in user_dictionary: " + str(list(user_dictionary.keys())) + " ----------") + +# write a for loop that will iterate five times. I can use the range function for this! +for _ in range(5): + print("---------- LOOP HAS STARTED ----------") + # in the for loop, I should ask for input from the user + + # next, I should separate the words + + # finally, I should add the key value pair to the dictionary + print("---------- LOOP HAS ENDED ----------") + + +

If we want to make sure that the for loop is iterating five times then we can add these print statements to execute so that we + can track the progress of the program.

+

Next, we'lll get the input from the user!

+ + +# initialize a dictionary +user_dictionary = {} +print("---------- keys in user_dictionary: " + str(list(user_dictionary.keys())) + " ----------") + +# write a for loop that will iterate five times. I can use the range function for this! +for _ in range(5): + print("---------- LOOP HAS STARTED ----------") + # in the for loop, I should ask for input from the user + response = input("Please enter two words to add to a dictionary. The first word is the definition, the second will be the word associated with it.") + print("---------- The response: " + response + " ----------") + + # next, I should separate the words + + # finally, I should add the key value pair to the dictionary + print("---------- LOOP HAS ENDED ----------") + + +

Now we'll want to print out the response. We're expecting that it should be as string, so we should be able to add it to the print + statement with other strings without any issue. If there is an issue, then something could be going wrong with how we are getting input + from the user.

+

Now, we can separate the words so that we have our key and value to add to the dictionary!

+ + +# initialize a dictionary +user_dictionary = {} +print("---------- keys in user_dictionary: " + str(list(user_dictionary.keys())) + " ----------") + +# write a for loop that will iterate five times. I can use the range function for this! +for _ in range(5): + print("---------- LOOP HAS STARTED ----------") + # in the for loop, I should ask for input from the user + response = input("Please enter two words to add to a dictionary. The first word is the definition, the second will be the word associated with it.") + print("---------- The response: " + response + " ----------") + + # next, I should separate the words + separated_response = response.split() + print("---------- The separated response: " + str(separated_response) + " ----------") + response_key = separated_response[0] + print("---------- The response key: " + response_key + " ----------") + response_value = separated_response[1] + print("---------- The response value: " + response_value + " ----------") + + # finally, I should add the key value pair to the dictionary + print("---------- LOOP HAS ENDED ----------") + + +

Here we know that response is a string that contains two words. We can use the split method to separate the words, which will give us + a list. The first word will be the key and the second word will be the value, so we can use indexing to access that information.

+ + +# initialize a dictionary +user_dictionary = {} +print("---------- keys in user_dictionary: " + str(list(user_dictionary.keys())) + " ----------") + +# write a for loop that will iterate five times. I can use the range function for this! +for _ in range(5): + print("---------- LOOP HAS STARTED ----------") + # in the for loop, I should ask for input from the user + response = input("Please enter two words to add to a dictionary. The first word is the definition, the second will be the word associated with it.") + print("---------- The response: " + response + " ----------") + + # next, I should separate the words + separated_response = response.split() + print("---------- The separated response: " + str(separated_response) + " ----------") + response_key = separated_response[0] + print("---------- The response key: " + response_key + " ----------") + response_value = separated_response[1] + print("---------- The response value: " + response_value + " ----------") + + # finally, I should add the key value pair to the dictionary + user_dictionary[response_key] = response_value + print("---------- LOOP HAS ENDED ----------") + +print("---------- The user dictionary") +print(user_dictionary) +print("----------") + + +

Finally, we add code to add the key and value pair into a dictionary. We can print out the final result of the dictionary once the for + loop is over so that we can determine if it has been done correctly.

+
diff --git a/pretext/BuildingPrograms/WPSketchanOutline.ptx b/pretext/BuildingPrograms/WPSketchanOutline.ptx new file mode 100644 index 00000000..f780184d --- /dev/null +++ b/pretext/BuildingPrograms/WPSketchanOutline.ptx @@ -0,0 +1,26 @@ + +
+ 👩‍💻 Sketch an Outline +

The prompt that we will be using is the following:

+

Build a program that replicates a physical dictionary that you might use. The program should that take five different input from the user. Each input will have two words and we will build a dictionary where the words are the keys and values.

+

Try writting out what you think the outline would be, and then check out our answer to see how we did it! Always remember that there can be multiple ways to solve a problem, so your solution may be different from ours but still solve the problem.

+ + + + + + +# initialize a dictionary + +# write a for loop that will iterate five times. I can use the range function for this! + +# in the for loop, I should ask for input from the user + +# next, I should separate the words + +# finally, I should add the key value pair to the dictionary + + + + +
diff --git a/pretext/BuildingPrograms/toctree.ptx b/pretext/BuildingPrograms/toctree.ptx new file mode 100644 index 00000000..05ccf217 --- /dev/null +++ b/pretext/BuildingPrograms/toctree.ptx @@ -0,0 +1,9 @@ + + + Building Programs + + + + + + diff --git a/pretext/Classes/AddingOtherMethodstoourClass.ptx b/pretext/Classes/AddingOtherMethodstoourClass.ptx new file mode 100644 index 00000000..2591191a --- /dev/null +++ b/pretext/Classes/AddingOtherMethodstoourClass.ptx @@ -0,0 +1,96 @@ + +
+ Adding Other Methods to a Class +

The key advantage of using a class like Point rather than something like a simple + tuple (7, 6) now becomes apparent. We can add methods to + the Point class that are sensible operations for points. Had we chosen to use a + tuple to represent the point, we would not have this capability. + Creating a class like Point brings an exceptional + amount of organizational power to our programs, and to our thinking. + We can group together the sensible operations, and the kinds of data + they apply to, and each instance of the class can have its own state.

+

A method behaves like a function but it is invoked on a specific + instance. For example, with a list bound to variable L, L.append(7) calls the function append, with the list itself as the first parameter and 7 as the second parameter. Methods are accessed using dot notation. This is why L.append(7) has 2 parameters even though you may think it only has one: the list stored in the variable L is the first parameter value and 7 is the second.

+

Let's add two simple methods to allow a point to give us information about its state. The getX method, when invoked, will return the value of the x coordinate.

+

The implementation of this method is straight forward since we already know how + to write functions that return values. One thing to notice is that even though the getX method does not need any other parameter information to do its work, there is still one formal parameter, self. As we stated earlier, all methods defined in a class that operate on objects of that class will have self as their first parameter. Again, this serves as a reference to the object itself which in turn gives access to the state data inside the object.

+ + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + +p = Point(7,6) +print(p.getX()) +print(p.getY()) + + +

Note that the getX method simply returns the value of the instance variable x from the object self. In other words, the implementation of the method is to go to the state of the object itself and get the value of x. Likewise, the getY method looks almost the same.

+

Let's add another method, distanceFromOrigin, to see better how methods + work. This method will again not need any additional information to do its work, beyond the data stored in the instance variables. + It will perform a more complex task.

+ + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + + +p = Point(7,6) +print(p.distanceFromOrigin()) + + +

Notice that the call of distanceFromOrigin does not explicitly + supply an argument to match the self parameter. This is true of all method calls. The definition will always seem to + have one additional parameter as compared to the invocation.

+

+ Check Your Understanding +

+

+

    +
  1. +

    Create a class called Animal that accepts two numbers as inputs and assigns them respectively to two instance variables: arms and legs. Create an instance method called limbs that, when called, returns the total number of limbs the animal has. To the variable name spider, assign an instance of Animal that has 4 arms and 4 legs. Call the limbs method on the spider instance and save the result to the variable name spidlimbs.

    +
  2. +
+

+ + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(spider.arms, 4, "Testing that spider was assigned the correct number of arms.") + self.assertEqual(spider.legs, 4, "Testing that spider was assigned the correct number of legs.") + self.assertEqual(spidlimbs, 8, "Testing that spidlimbs was assigned correctly.") + +myTests().main() + + +
diff --git a/pretext/Classes/ChapterAssessment.ptx b/pretext/Classes/ChapterAssessment.ptx new file mode 100644 index 00000000..884ac401 --- /dev/null +++ b/pretext/Classes/ChapterAssessment.ptx @@ -0,0 +1,81 @@ + +
+ Chapter Assessment + + +

Define a class called Bike that accepts a string and a float as input, and assigns those inputs respectively to two instance variables, color and price. Assign to the variable testOne an instance of Bike whose color is blue and whose price is 89.99. Assign to the variable testTwo an instance of Bike whose color is purple and whose price is 25.0.

+
+ + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(testOne.color, "blue", "Testing that testOne has the correct color assigned.") + self.assertEqual(testOne.price, 89.99, "Testing that testOne has the correct price assigned.") + + def testTwo(self): + self.assertEqual(testTwo.color, "purple", "Testing that testTwo has the correct color assigned.") + self.assertEqual(testTwo.price, 25.0, "Testing that testTwo has the correct color assigned.") + +myTests().main() + + +
+ + +

Create a class called AppleBasket whose constructor accepts two inputs: a string representing a color, and a number representing a quantity of apples. The constructor should initialize two instance variables: apple_color and apple_quantity. Write a class method called increase that increases the quantity by 1 each time it is invoked. You should also write a __str__ method for this class that returns a string of the format: "A basket of [quantity goes here] [color goes here] apples." e.g. "A basket of 4 red apples." or "A basket of 50 blue apples." (Writing some test code that creates instances and assigns values to variables may help you solve this problem!)

+
+ + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + tester = AppleBasket("red",4) + self.assertEqual(tester.apple_quantity, 4, "Testing the initialization of the apple_quantity inst var.") + def testTwo(self): + tester = AppleBasket("red",4) + tester.increase() + self.assertEqual(tester.apple_quantity, 5, "Testing the increase method") + def testThree(self): + tester = AppleBasket("green",17) + self.assertEqual(tester.__str__(),"A basket of 17 green apples.") + + +myTests().main() + + +
+ + +

Define a class called BankAccount that accepts the name you want associated with your bank account in a string, and an integer that represents the amount of money in the account. The constructor should initialize two instance variables from those inputs: name and amt. Add a string method so that when you print an instance of BankAccount, you see "Your account, [name goes here], has [start_amt goes here] dollars." Create an instance of this class with "Bob" as the name and 100 as the amount. Save this to the variable t1.

+
+ + + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(t1.__str__(), "Your account, Bob, has 100 dollars.", "Testing that t1 is assigned to correct value") + +myTests().main() + + +
+
diff --git a/pretext/Classes/ClassVariablesInstanceVariables.ptx b/pretext/Classes/ClassVariablesInstanceVariables.ptx new file mode 100644 index 00000000..ee3a7f5c --- /dev/null +++ b/pretext/Classes/ClassVariablesInstanceVariables.ptx @@ -0,0 +1,100 @@ + +
+ Class Variables and Instance Variables +

You have already seen that each instance of a class has its own namespace with its own instance variables. Two instances of the Point class each have their own instance variable x. Setting x in one instance doesn't affect the other instance.

+

A class can also have class variables. A class variable is set as part of the class definition.

+

For example, consider the following version of the Point class. Here we have added a graph method that generates a string representing a little text-based graph with the Point plotted on the graph. It's not a very pretty graph, in part because the y-axis is stretched like a rubber band, but you can get the idea from this.

+

Note that there is an assignment to the variable printed_rep on line 4. It is not inside any method. That makes it a class variable. It is accessed in the same way as instance variables. For example, on line 16, there is a reference to self.printed_rep. If you change line 4, you have it print a different character at the x,y coordinates of the Point in the graph.

+ + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + printed_rep = "*" + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def graph(self): + rows = [] + size = max(int(self.x), int(self.y)) + 2 + for j in range(size-1) : + if (j+1) == int(self.y): + special_row = str((j+1) % 10) + (" "*(int(self.x) -1)) + self.printed_rep + rows.append(special_row) + else: + rows.append(str((j+1) % 10)) + rows.reverse() # put higher values of y first + x_axis = "" + for i in range(size): + x_axis += str(i % 10) + rows.append(x_axis) + + return "\n".join(rows) + + +p1 = Point(2, 3) +p2 = Point(3, 12) +print(p1.graph()) +print() +print(p2.graph()) + + +

To be able to reason about class variables and instance variables, it is helpful to know the rules that the python interpreter uses. That way, you can mentally simulate what the interpreter does.

+
+
  • + When the interpreter sees an expression of the form <obj>.<varname>, it: +

    +

      +
    1. +

      Checks if the object has an instance variable set. If so, it uses that value.

      +
    2. +
    3. +

      If it doesn't find an instance variable, it checks whether the class has a class variable. If so it uses that value.

      +
    4. +
    5. +

      If it doesn't find an instance or a class variable, it creates a runtime error (actually, it does one other check first, which you will learn about in the next chapter).

      +
    6. +
    +

    +
  • +
  • + When the interpreter sees an assignment statement of the form <obj>.<varname> = <expr>, it: +

    +

      +
    1. +

      Evaluates the expression on the right-hand side to yield some python object;

      +
    2. +
    3. +

      Sets the instance variable <varname> of <obj> to be bound to that python object. Note that an assignment statement of this form never sets the class variable; it only sets the instance variable.

      +
    4. +
    +

    +
  • +
    +

    In order to set the class variable, you use an assignment statement of the form <varname> = <expr> at the top-level in a class definition, like on line 4 in the code above to set the class variable printed_rep.

    +
    +
  • + In case you are curious, method definitions also create class variables. Thus, in the code above, graph becomes a class variable that is bound to a function/method object. p1.graph() is evaluated by: +

    +

      +
    • +

      looking up p1 and finding that it's an instance of Point

      +
    • +
    • +

      looking for an instance variable called graph in p1, but not finding one

      +
    • +
    • +

      looking for a class variable called graph in p1's class, the Point class; it finds a function/method object

      +
    • +
    • +

      Because of the () after the word graph, it invokes the function/method object, with the parameter self bound to the object p1 points to.

      +
    • +
    +

    +
  • +
    +

    Try running it in codelens and see if you can follow how it all works.

    +
    diff --git a/pretext/Classes/ConvertinganObjecttoaString.ptx b/pretext/Classes/ConvertinganObjecttoaString.ptx new file mode 100644 index 00000000..412b863f --- /dev/null +++ b/pretext/Classes/ConvertinganObjecttoaString.ptx @@ -0,0 +1,101 @@ + +
    + Converting an Object to a String +

    When we're working with classes and objects, it is often necessary to print an object (that is, to print the state of an object). + Consider the example below.

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + + +p = Point(7,6) +print(p) + + +

    The print function shown above produces a string representation of the Point p. The default functionality provided by + Python tells you that p is an object of type Point. However, it does not tell you anything about the specific + state of the point.

    +

    We can improve on this representation if we include a special method call __str__. Notice that this method uses the same naming convention as the constructor, that is two underscores before and after the name. It is common that Python + uses this naming technique for special methods.

    +

    The __str__ method is responsible for returning a string representation as defined by the class creator. In other words, you as the programmer, get to choose what a Point should look like when it gets printed. In this case, we + have decided that the string representation will include the values of x and y as well as some identifying text. It + is required that the __str__ method create and return a string.

    +

    Whatever string the __str__ method for a class returns, that is the string that will print when you put any instance of that class in a print statement. For that reason, the string that a class's __str__ method returns should usually include values of instance variables. If a point has x value 3 and y value 4, but another point has x value 5 and y value 9, those two Point objects should probably look different when you print them, right?

    +

    Take a look at the code below.

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + + def __str__(self): + return "x = {}, y = {}".format(self.x, self.y) + +p = Point(7,6) +print(p) + + +

    When we run the program above you can see that the print function now shows the string that we chose.

    +

    Now, you ask, don't we already have a str type converter that can + turn our object into a string? Yes we do!

    +

    And doesn't print + automatically use this when printing things? Yes again!

    +

    However, as we saw earlier, these automatic mechanisms do not do exactly what we want. Python provides many default implementations for + methods that we as programmers will probably want to change. When a programmer changes the meaning of a method we + say that we override the method. Note also that the str type converter function uses whatever __str__ method we + provide.

    +

    + Check Your Understanding +

    +

    +

      +
    1. +

      Create a class called Cereal that accepts three inputs: 2 strings and 1 integer, and assigns them to 3 instance variables in the constructor: name, brand, and fiber. When an instance of Cereal is printed, the user should see the following: [name] cereal is produced by [brand] and has [fiber integer] grams of fiber in every serving! To the variable name c1, assign an instance of Cereal whose name is "Corn Flakes", brand is "Kellogg's", and fiber is 2. To the variable name c2, assign an instance of Cereal whose name is "Honey Nut Cheerios", brand is "General Mills", and fiber is 3. Practice printing both!

      +
    2. +
    +

    + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(c1.__str__(), "Corn Flakes cereal is produced by Kellogg's and has 2 grams of fiber in every serving!", "Testing that c1 prints correctly.") + def testTwo(self): + self.assertEqual(c2.__str__(), "Honey Nut Cheerios cereal is produced by General Mills and has 3 grams of fiber in every serving!", "Testing that c2 prints correctly.") + +myTests().main() + + +
    diff --git a/pretext/Classes/Exercises.ptx b/pretext/Classes/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Classes/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Classes/Glossary.ptx b/pretext/Classes/Glossary.ptx new file mode 100644 index 00000000..0638b259 --- /dev/null +++ b/pretext/Classes/Glossary.ptx @@ -0,0 +1,62 @@ + +

    + Glossary + + + attribute +

    One of the named data items that makes up an instance.

    +
    + + class +

    A user-defined compound type. A class can also be thought of as a + template for the objects that are instances of it.

    +
    + + constructor +

    Every class has a factory, called by the same name as the class, for + making new instances. If the class has an initializer method, this method + is used to get the attributes (i.e. the state) of the new object properly set up.

    +
    + + initializer method +

    A special method in Python (called __init__) + that is invoked automatically to set a newly created object's + attributes to their initial (factory-default) state.

    +
    + + instance +

    An object whose type is of some class. The words instance and object are used + interchangeably.

    +
    + + instance variable +

    A variable that stores a value associated with the instance. The instance variables together store the state of an instance.

    +
    + + instantiate +

    To create an instance of a class, and to run its initializer.

    +
    + + method +

    A function that is defined inside a class definition and is invoked on + instances of that class.

    +
    + + object +

    A compound data type that is often used to model a thing or concept in + the real world. It bundles together the data and the operations that + are relevant for that kind of data. Instance and object are used + interchangeably.

    +
    + + object-oriented programming +

    A powerful style of programming in which data and the operations + that manipulate it are organized into classes and methods.

    +
    + + object-oriented language +

    A language that provides features, such as user-defined classes and + inheritance, that facilitate object-oriented programming.

    +
    +
    +
    diff --git a/pretext/Classes/ImprovingourConstructor.ptx b/pretext/Classes/ImprovingourConstructor.ptx new file mode 100644 index 00000000..e94c9d6b --- /dev/null +++ b/pretext/Classes/ImprovingourConstructor.ptx @@ -0,0 +1,53 @@ + +
    + Adding Parameters to the Constructor +

    Our constructor so far can only create points at location (0,0). To create a point at position (7, 6) requires that we + provide some additional capability for the user to pass information to the constructor. Since constructors are simply specially named functions, we can use parameters (as we've seen before) to provide the specific information.

    +

    We can make our class constructor more generally usable by putting extra parameters into + the __init__ method, as shown in this example.

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + +p = Point(7,6) + + +

    Now when we create new points, we supply the x and y coordinates as parameters. When the point is created, the values of initX and initY are assigned to the state of the object, in the instance variables x and y.

    +

    This is a common thing to do in the __init__ method for a class: take in some parameters and save them as instance variables. Why is this useful? Keep in mind that the parameter variables will go away when the method is finished executing. The instance variables, however, will still be accessible anywhere that you have a handle on the object instance. This is a way of saving those initial values that are provided when the class constructor is invoked.

    +
    +

    Later on, you will see classes where the __init__ method does more than just save parameters as instance variables. For example, it might parse the contents of those variables and do some computation on them, storing the results in instance variables. It might even make an Internet connection, download some content, and store that in instance variables.

    +
    + Simple object has state and methods +

    + Check Your Understanding +

    +

    +

      +
    1. +

      Create a class called NumberSet that accepts 2 integers as input, and defines two instance variables: num1 and num2, which hold each of the input integers. Then, create an instance of NumberSet where its num1 is 6 and its num2 is 10. Save this instance to a variable t.

      +
    2. +
    +

    + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(t.num1, 6, "Testing that t.num1 has correct number assigned.") + def testOneB(self): + self.assertEqual(t.num2, 10, "Testing that t.num2 has correct number assigned.") + +myTests().main() + + +
    diff --git a/pretext/Classes/InstancesasReturnValues.ptx b/pretext/Classes/InstancesasReturnValues.ptx new file mode 100644 index 00000000..81818a22 --- /dev/null +++ b/pretext/Classes/InstancesasReturnValues.ptx @@ -0,0 +1,51 @@ + +
    + Instances as Return Values +

    Functions and methods can return objects. This is actually nothing new since everything in Python is an object and we have + been returning values for quite some time. (You can also have lists or tuples of object instances, etc.) The difference here is that we want to have the method create an object using + the constructor and then return it as the value of the method.

    +

    Suppose you have a point object + and wish to find the midpoint halfway between it and some other target point. We would like to write a method, let's call + it halfway, which takes another Point as a parameter and returns the Point that is halfway between the point and + the target point it accepts as input.

    + + +class Point: + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + + def __str__(self): + return "x = {}, y = {}".format(self.x, self.y) + + def halfway(self, target): + mx = (self.x + target.x)/2 + my = (self.y + target.y)/2 + return Point(mx, my) + +p = Point(3,4) +q = Point(5,12) +mid = p.halfway(q) +# note that you would have exactly the same result if you instead wrote +# mid = q.halfway(p) +# because they are both Point objects, and the middle is the same no matter what + +print(mid) +print(mid.getX()) +print(mid.getY()) + + +

    The resulting Point, mid, has an x value of 4 and a y value of 8. We can also use any other methods on mid since it is a + Point object.

    +
    diff --git a/pretext/Classes/ObjectsRevisited.ptx b/pretext/Classes/ObjectsRevisited.ptx new file mode 100644 index 00000000..478569c1 --- /dev/null +++ b/pretext/Classes/ObjectsRevisited.ptx @@ -0,0 +1,11 @@ + +
    + Objects Revisited +

    In Python, every value is actually an object. Whether it be a dictionary, a list, or even an integer, they are all objects. Programs manipulate those objects either by performing + computation with them or by asking them to perform methods. To be more specific, we say that an object has + a state and a collection of methods that it can perform. (More about methods below.) The state of an object represents those things + that the object knows about itself. The state is stored in instance variables. For example, as we have seen with turtle objects, each turtle has a state consisting + of the turtle's position, its color, its heading and so on. Each turtle also has the ability to go forward, backward, or turn right or left. Individual turtles are different in that even though they are + all turtles, they differ in the specific values of the individual state attributes (maybe they are in a different location or have a different heading).

    + Simple object has state and methods +
    diff --git a/pretext/Classes/ObjectsasArgumentsandParameters.ptx b/pretext/Classes/ObjectsasArgumentsandParameters.ptx new file mode 100644 index 00000000..f5584ac0 --- /dev/null +++ b/pretext/Classes/ObjectsasArgumentsandParameters.ptx @@ -0,0 +1,76 @@ + +
    + Objects as Arguments and Parameters +

    You can pass an object as an argument to a function, in the usual way.

    +

    Here is a simple function called distance involving our new Point objects. The job of this function is to figure out the + distance between two points.

    + + +import math + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + +def distance(point1, point2): + xdiff = point2.getX()-point1.getX() + ydiff = point2.getY()-point1.getY() + + dist = math.sqrt(xdiff**2 + ydiff**2) + return dist + +p = Point(4,3) +q = Point(0,0) +print(distance(p,q)) + + +

    distance takes two points and returns the distance between them. Note that distance is not a method of the Point class. You can see this by looking at the indentation pattern. It is not inside the class definition. The other way we + can know that distance is not a method of Point is that self is not included as a formal parameter. In addition, we do not invoke distance using the dot notation.

    +

    We could have made distance be a method of the Point class. Then, we would have called the first parameter self, and would have invoked it using the dot notation, as in the following code. Which way to implement it is a matter of coding style. Both work correctly. Most programmers choose whether to make functions be stand-alone or methods of a class based on whether the function semantically seems to be an operation that is performed on instances of the class. In this case, because distance is really a property of a pair of points and is symmetric (the distance from a to b is the same as that from b to a) it makes more sense to have it be a standalone function and not a method. Many heated discussions have occurred between programmers about such style decisions.

    + + +import math + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def getX(self): + return self.x + + def getY(self): + return self.y + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + + def distance(self, point2): + xdiff = point2.getX()-self.getX() + ydiff = point2.getY()-self.getY() + + dist = math.sqrt(xdiff**2 + ydiff**2) + return dist + +p = Point(4,3) +q = Point(0,0) +print(p.distance(q)) + + +
    diff --git a/pretext/Classes/Tamagotchi.ptx b/pretext/Classes/Tamagotchi.ptx new file mode 100644 index 00000000..2f0aa665 --- /dev/null +++ b/pretext/Classes/Tamagotchi.ptx @@ -0,0 +1,172 @@ + +
    + A Tamagotchi Game +

    There are also a lot of interesting ways to put user-defined classes to use that don't involve data from the internet. Let's pull all these mechanics together in a slightly more interesting way than we got with the Point class. Remember Tamagotchis, the little electronic pets? As time passed, they would get hungry or bored. You had to clean up after them or they would get sick. And you did it all with a few buttons on the device.

    +

    We are going to make a simplified, text-based version of that. In your problem set and in the chapter on we will extend this further.

    +
    +
  • + First, let's start with a class <c>Pet</c>. Each instance of the class will be one electronic pet for the user to take care of. Each instance will have a current state, consisting of three instance variables: +

    +

      +
    • +

      hunger, an integer

      +
    • +
    • +

      boredom, an integer

      +
    • +
    • +

      sounds, a list of strings, each a word that the pet has been taught to say

      +
    • +
    +

    +
  • +
    +

    In the __init__ method, hunger and boredom are initialized to random values between 0 and the threshold for being hungry or bored. The sounds instance variable is initialized to be a copy of the class variable with the same name. The reason we make a copy of the list is that we will perform destructive operations (appending new sounds to the list). If we didn't make a copy, then those destructive operations would affect the list that the class variable points to, and thus teaching a sound to any of the pets would teach it to all instances of the class!

    +

    There is a clock_tick method which just increments the boredom and hunger instance variables, simulating the idea that as time passes, the pet gets more bored and hungry.

    +

    The __str__ method produces a string representation of the pet's current state, notably whether it is bored or hungry or whether it is happy. It's bored if the boredom instance variable is larger than the threshold, which is set as a class variable.

    +

    To relieve boredom, the pet owner can either teach the pet a new word, using the teach() method, or interact with the pet, using the hi() method. In response to teach(), the pet adds the new word to its list of words. In response to the hi() method, it prints out one of the words it knows, randomly picking one from its list of known words. Both hi() and teach() cause an invocation of the reduce_boredom() method. It decrements the boredom state by an amount that it reads from the class variable boredom_decrement. The boredom state can never go below 0.

    +

    To relieve hunger, we call the feed() method.

    + + +from random import randrange + +class Pet(): + boredom_decrement = 4 + hunger_decrement = 6 + boredom_threshold = 5 + hunger_threshold = 10 + sounds = ['Mrrp'] + def __init__(self, name = "Kitty"): + self.name = name + self.hunger = randrange(self.hunger_threshold) + self.boredom = randrange(self.boredom_threshold) + self.sounds = self.sounds[:] # copy the class attribute, so that when we make changes to it, we won't affect the other Pets in the class + + def clock_tick(self): + self.boredom += 1 + self.hunger += 1 + + def mood(self): + if self.hunger <= self.hunger_threshold and self.boredom <= self.boredom_threshold: + return "happy" + elif self.hunger > self.hunger_threshold: + return "hungry" + else: + return "bored" + + def __str__(self): + state = " I'm " + self.name + ". " + state += " I feel " + self.mood() + ". " + # state += "Hunger {} Boredom {} Words {}".format(self.hunger, self.boredom, self.sounds) + return state + + def hi(self): + print(self.sounds[randrange(len(self.sounds))]) + self.reduce_boredom() + + def teach(self, word): + self.sounds.append(word) + self.reduce_boredom() + + def feed(self): + self.reduce_hunger() + + def reduce_hunger(self): + self.hunger = max(0, self.hunger - self.hunger_decrement) + + def reduce_boredom(self): + self.boredom = max(0, self.boredom - self.boredom_decrement) + + +

    Let's try making a pet and playing with it a little. Add some of your own commands, too, and keep printing p1 to see what the effects are. If you want to directly inspect the state, try printing p1.boredom or p1.hunger.

    + + +p1 = Pet("Fido") +print(p1) +for i in range(10): + p1.clock_tick() + print(p1) +p1.feed() +p1.hi() +p1.teach("Boo") +for i in range(10): + p1.hi() +print(p1) + + +

    That's all great if you want to interact with the pet by writing python code. Let's make a game that non-programmers can play.

    +

    We will use the pattern. At each iteration, we will display a text prompt reminding the user of what commands are available.

    +

    The user will have a list of pets, each with a name. The user can issue a command to adopt a new pet, which will create a new instance of Pet. Or the user can interact with an existing pet, with a Greet, Teach, or Feed command.

    +

    No matter what the user does, with each command entered, the clock ticks for all their pets. Watch out, if you have too many pets, you won't be able to keep them all satisfied!

    + + +import sys +sys.setExecutionLimit(60000) + +def whichone(petlist, name): + for pet in petlist: + if pet.name == name: + return pet + return None # no pet matched + +def play(): + animals = [] + + option = "" + base_prompt = """ + Quit + Adopt <petname_with_no_spaces_please> + Greet <petname> + Teach <petname> <word> + Feed <petname> + + Choice: """ + feedback = "" + while True: + action = input(feedback + "\n" + base_prompt) + feedback = "" + words = action.split() + if len(words) > 0: + command = words[0] + else: + command = None + if command == "Quit": + print("Exiting...") + return + elif command == "Adopt" and len(words) > 1: + if whichone(animals, words[1]): + feedback += "You already have a pet with that name\n" + else: + animals.append(Pet(words[1])) + elif command == "Greet" and len(words) > 1: + pet = whichone(animals, words[1]) + if not pet: + feedback += "I didn't recognize that pet name. Please try again.\n" + print() + else: + pet.hi() + elif command == "Teach" and len(words) > 2: + pet = whichone(animals, words[1]) + if not pet: + feedback += "I didn't recognize that pet name. Please try again." + else: + pet.teach(words[2]) + elif command == "Feed" and len(words) > 1: + pet = whichone(animals, words[1]) + if not pet: + feedback += "I didn't recognize that pet name. Please try again." + else: + pet.feed() + else: + feedback+= "I didn't understand that. Please try again." + + for pet in animals: + pet.clock_tick() + feedback += "\n" + pet.__str__() + + + +play() + + +
    diff --git a/pretext/Classes/TestingClasses.ptx b/pretext/Classes/TestingClasses.ptx new file mode 100644 index 00000000..767a7192 --- /dev/null +++ b/pretext/Classes/TestingClasses.ptx @@ -0,0 +1,155 @@ + +
    + Testing classes + +

    This page depends on the use of the test module, which is introduced in . If you haven't covered that chapter yet, you will want to delay reading this page until you do.

    +
    +

    To test a user-defined class, you will create test cases that check whether instances are created properly, and you will + create test cases for each of the methods as functions, by invoking them on particular instances and seeing whether they + produce the correct return values and side effects, especially side effects that change data stored in the instance + variables. To illustrate, we will use the Point class that was used in the introduction to classes.

    +

    To test whether the class constructor (the __init__) method is working correctly, create an instance and then make + tests to see whether its instance variables are set correctly. Note that this is a side effect test: the constructor + method's job is to set instance variables, which is a side effect. Its return value doesn't matter.

    +

    A method like distanceFromOrigin in the Point class you saw does its work by computing a return value, so it + needs to be tested with a return value test. A method like move in the Turtle class does its work by changing the + contents of a mutable object (the point instance has its instance variable changed) so it needs to be tested with a side + effect test.

    +

    Try adding some more tests in the code below, once you understand what's there.

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self, initX, initY): + + self.x = initX + self.y = initY + + def distanceFromOrigin(self): + return ((self.x ** 2) + (self.y ** 2)) ** 0.5 + + def move(self, dx, dy): + self.x = self.x + dx + self.y = self.y + dy + + +#testing class constructor (__init__ method) +p = Point(3, 4) +assert p.y == 4 +assert p.x == 3 + +#testing the distance method +p = Point(3, 4) +assert p.distanceFromOrigin() == 5.0 + +#testing the move method +p = Point(3, 4) +p.move(-2, 3) +assert p.x == 1 +assert p.y == 7 + + +

    + Check your understanding +

    + + +

    For each function, you should create exactly one test case.

    +
    + + + +

    True

    +
    + +

    Each test case checks whether the function works correctly on one input. It's a good idea to check several different inputs, including some extreme cases.

    +
    +
    + + +

    False

    +
    + +

    It's a good idea to check some extreme cases, as well as the typical cases.

    +
    +
    +
    +
    + + +

    To test a method that changes the value of an instance variable, which kind of test case should you write?

    +
    + + + +

    return value test

    +
    + +

    The method may return the correct value but not properly change the values of instance variables. See the move method of the Point class above.

    +
    +
    + + +

    side effect test

    +
    + +

    The move method of the Point class above is a good example.

    +
    +
    +
    +
    + + +

    To test the function maxabs, which kind of test case should you write?

    + + +def maxabs(L): + """L should be a list of numbers (ints or floats). The return value should be the maximum absolute value of the numbers in L.""" + return max(L, key=abs) + + +
    + + + +

    return value test

    +
    + +

    You want to check if maxabs returns the correct value for some input.

    +
    +
    + + +

    side effect test

    +
    + +

    The function has no side effects; even though it takes a list L as a parameter, it doesn't alter its contents.

    +
    +
    +
    +
    + + +

    We have usually used the sorted function, which takes a list as input and returns a new list containing the same items, possibly in a different order. There is also a method called sort for lists (e.g. [1,6,2,4].sort()). It changes the order of the items in the list itself, and it returns the value None. Which kind of test case would you use on the sort method?

    +
    + + + +

    return value test

    +
    + +

    The sort method always returns None, so there's nothing to check about whether it is returning the right value.

    +
    +
    + + +

    side effect test

    +
    + +

    You want to check whether it has the correct side effect, whether it correctly mutates the list.

    +
    +
    +
    +
    +
    diff --git a/pretext/Classes/ThinkingAboutClasses.ptx b/pretext/Classes/ThinkingAboutClasses.ptx new file mode 100644 index 00000000..1c66b0ea --- /dev/null +++ b/pretext/Classes/ThinkingAboutClasses.ptx @@ -0,0 +1,28 @@ + +
    + Thinking About Classes and Instances +

    You can now imagine some reasons you may want to define a class. You have seen examples of creating types that are more complicated or specific than the ones built in to Python (like lists or strings). Turtle, with all the instance variables and methods you learned about using earlier in the semester, is a class that programmers defined which is now included in the Python language. In this chapter, we defined Point with some functionality that can make it easier to write programs that involve x,y coordinate Point instances. And shortly, you'll see how you can define classes to represent objects in a game.

    +

    You can also use self-defined classes to hold data – for example, data you get from making a request to a REST API.

    +

    Before you decide to define a new class, there are a few things to keep in mind, and questions you should ask yourself:

    +

    +

    +

    +

    After considering those questions and making decisions about how you're going to get started with a class definition, you can begin to define your class.

    +

    Remember that a class definition, like a function definition, is a general description of what every instance of the class should have. (Every Point has an x and a y.) The class instances are specific: e.g. the Point with a specific x and y >. You might have a Point with an x value of 3 and a y value of 2, so for that particular instance of the class Point, you'd pass in 3 and 2 to the constructor, the __init__ method, like so: new_point = Point(3,2), as you saw in the last sections.

    +
    diff --git a/pretext/Classes/UserDefinedClasses.ptx b/pretext/Classes/UserDefinedClasses.ptx new file mode 100644 index 00000000..85e143a1 --- /dev/null +++ b/pretext/Classes/UserDefinedClasses.ptx @@ -0,0 +1,128 @@ + +
    + User Defined Classes +

    We've already seen classes like str, int, float and list. These were defined by Python and + made available for us to use. However, in many cases when we are solving problems we need to create data objects + that are related to the problem we are trying to solve. We need to create our own classes.

    +

    As an example, consider the concept of a mathematical point. In two dimensions, a point is two + numbers (coordinates) that are treated collectively as a single object. + Points are often written in parentheses with a comma + separating the coordinates. For example, (0, 0) represents the origin, and + (x, y) represents the point x units to the right and y units up + from the origin. This (x,y) is the state of the point.

    +

    Thinking about our diagram above, we could draw a point object as shown here.

    + A point has an x and a y +

    Some of the typical operations that one associates with points might be to ask + the point for its x coordinate, getX, or to ask for its y coordinate, getY. You would want these types of functions available to prevent accidental changes to these instance variables since doing so would allow you to view the values without accessing them directly. You may also + wish to calculate the distance of a point from the origin, or the distance of a point from another point, + or find the midpoint between two points, or answer the question as to whether a point falls within a + given rectangle or circle. We'll shortly see how we can organize these + together with the data.

    + A point also has methods +

    Now that we understand what a point object might look like, we can define a new class. + We'll want our points to each have an x and a y attribute, + so our first class definition looks like this.

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self): + """ Create a new point at the origin """ + self.x = 0 + self.y = 0 + + +

    Class definitions can appear anywhere in a program, but they are usually near + the beginning (after the import statements). The syntax rules for a class + definition are the same as for other compound statements. There is a header + which begins with the keyword, class, followed by the name of the class, + and ending with a colon.

    +

    If the first line after the class header is a string, it becomes + the docstring of the class, and will be recognized by various tools. (This + is also the way docstrings work in functions.)

    +

    Every class should have a method with the special name __init__. + This initializer method, often referred to as the constructor, is automatically called whenever a new + instance of Point is created. It gives the programmer the opportunity + to set up the attributes required within the new instance by giving them + their initial state values. The self parameter (you could choose any + other name, but nobody ever does!) is automatically set to reference + the newly created object that needs to be initialized.

    +

    So let's use our new Point class now. This next part should look a little familiar, if you remember some of the syntax for how we created instances of the Turtle class, in the .

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self): + + self.x = 0 + self.y = 0 + +p = Point() # Instantiate an object of type Point +q = Point() # and make a second point + +print("Nothing seems to have happened with the points") + + +

    During the initialization of the objects, we created two + attributes called x and y for each object, and gave them both the value 0. You will note that when you run the + program, nothing happens. It turns out that this is not quite the case. In fact, two Points have been created, each + having an x and y coordinate with value 0. However, because we have not asked the program to do anything with the points, we don't see any other result.

    + Simple object has state and methods +

    The following program adds a few print statements. You can see that the output suggests that each one is a Point object. + However, notice that the is operator returns False meaning that they are different objects (we will have more to say about this in a later section).

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self): + + self.x = 0 + self.y = 0 + +p = Point() # Instantiate an object of type Point +q = Point() # and make a second point + +print(p) +print(q) + +print(p is q) + + +

    A function like Point that creates a new object instance + is called a constructor. Every class automatically uses the name of the class as the name of the constructor function. + The definition of the constructor function is done + when you write the __init__ function (method) inside the class definition.

    +

    It may be helpful to think of a class as a factory for making objects. + The class itself isn't an instance of a point, but it contains the machinery + to make point instances. Every time you call the constructor, you're asking + the factory to make you a new object. As the object comes off the + production line, its initialization method is executed to + get the object properly set up with it's factory default settings.

    +

    The combined process of make me a new object and get its settings initialized + to the factory default settings is called instantiation.

    +

    To get a clearer understanding of what happens when instantiating a new instance, examine the previous code using CodeLens.

    + + +class Point: + """ Point class for representing and manipulating x,y coordinates. """ + + def __init__(self): + + self.x = 0 + self.y = 0 + +p = Point() # Instantiate an object of type Point +q = Point() # and make a second point + +print(p) +print(q) + +print(p is q) + + +

    At Step 2 in the CodeLens execution, you can see that Point has been bound to an object representing the Point class, but there are not yet any instances. The execution of line 9, p = Point(), occurs at steps 3-5. First, at step 3, you can see that a blank instance of the class has been created, and is passed as the first (and only parameter) to the __init__ method. That method's code is executed, with the variable self bound to that instance. At steps 4 and 5, two instance variables are filled in: x and y are both set to 0. Nothing is returned from the __init__ method, but the point object itself is returned from the call to Point(). Thus, at step 7, p is bound to the new point that was created and initialized.

    +

    Skipping ahead, by the time we get to Step 14, p and q are each bound to different Point instances. Even though both have x and y instance variables set to 0, they are different objects. Thus p is q evaluates to False.

    +
    diff --git a/pretext/Classes/intro-ClassesandObjectstheBasics.ptx b/pretext/Classes/intro-ClassesandObjectstheBasics.ptx new file mode 100644 index 00000000..8481ccf3 --- /dev/null +++ b/pretext/Classes/intro-ClassesandObjectstheBasics.ptx @@ -0,0 +1,21 @@ + +
    + Introduction: Classes and Objects - the Basics + + Object-oriented programming +

    Python is an object-oriented programming language. That means it + provides features that support object-oriented programming (OOP).

    +

    Object-oriented programming has its roots in the 1960s, but it wasn't until the + mid 1980s that it became the main programming paradigm used in the creation + of new software. It was developed as a way to handle the rapidly increasing + size and complexity of software systems and to make it easier to modify these + large and complex systems over time.

    +

    Up to now, some of the programs we have been writing use a procedural programming paradigm. In + procedural programming the focus is on writing functions or procedures which + operate on data. In object-oriented programming the focus is on the creation of + objects which contain both data and functionality together. + Usually, each object definition corresponds to some object or concept in the real + world and the functions that operate on that object correspond to the ways + real-world objects interact.

    +
    +
    diff --git a/pretext/Classes/sorting_instances.ptx b/pretext/Classes/sorting_instances.ptx new file mode 100644 index 00000000..ae251f04 --- /dev/null +++ b/pretext/Classes/sorting_instances.ptx @@ -0,0 +1,2 @@ + + diff --git a/pretext/Classes/toctree.ptx b/pretext/Classes/toctree.ptx new file mode 100644 index 00000000..3e1281f2 --- /dev/null +++ b/pretext/Classes/toctree.ptx @@ -0,0 +1,20 @@ + + + Defining your own Classes + + + + + + + + + + + + + + + + + diff --git a/pretext/Conditionals/BooleanValuesandBooleanExpressions.ptx b/pretext/Conditionals/BooleanValuesandBooleanExpressions.ptx new file mode 100644 index 00000000..34ae2c0d --- /dev/null +++ b/pretext/Conditionals/BooleanValuesandBooleanExpressions.ptx @@ -0,0 +1,115 @@ + +
    + Boolean Values and Boolean Expressions +
    diff --git a/pretext/Conditionals/Chainedconditionals.ptx b/pretext/Conditionals/Chainedconditionals.ptx new file mode 100644 index 00000000..f851e795 --- /dev/null +++ b/pretext/Conditionals/Chainedconditionals.ptx @@ -0,0 +1,266 @@ + +
    + Chained conditionals +

    Python provides an alternative way to write nested selection such as the one shown in the previous section. + This is sometimes referred to as a chained conditional.

    + + +if x < y: + print("x is less than y") +elif x > y: + print("x is greater than y") +else: + print("x and y must be equal") + + +

    The flow of control can be drawn in a different orientation but the resulting pattern is identical to the one shown above.

    + +

    elif is an abbreviation of else if. Again, exactly one branch will be + executed. There is no limit of the number of elif statements but only a + single (and optional) final else statement is allowed and it must be the last + branch in the statement.

    + +

    Each condition is checked in order. If the first is false, the next is checked, + and so on. If one of them is true, the corresponding branch executes, and the + statement ends. Even if more than one condition is true, only the first true + branch executes.

    +

    Here is the same program using elif.

    + + +x = 10 +y = 10 + +if x < y: + print("x is less than y") +elif x > y: + print("x is greater than y") +else: + print("x and y must be equal") + + +

    The following image highlights different kinds of valid conditionals that can be used. Though there are other + versions of conditionals that Python can understand (imagine an if statement with twenty elif statements), those + other versions must follow the same order as seen below.

    + shows a unary conditiona, a binary conditional, a conditional with if, elif, else, and a conditional with if, elif, and elif. +

    + Check your understanding +

    + + +

    Which of I, II, and III below gives the same result as the following nested if?

    + + +# nested if-else statement +x = -10 +if x < 0: + print("The negative number ", x, " is not valid here.") +else: + if x > 0: + print(x, " is a positive number") + else: + print(x, " is 0") + + + + +I. + +if x < 0: + print("The negative number ", x, " is not valid here.") +else (x > 0): + print(x, " is a positive number") +else: + print(x, " is 0") + + + + +II. + +if x < 0: + print("The negative number ", x, " is not valid here.") +elif (x > 0): + print(x, " is a positive number") +else: + print(x, " is 0") + + + + +III. + +if x < 0: + print("The negative number ", x, " is not valid here.") +if (x > 0): + print(x, " is a positive number") +else: + print(x, " is 0") + + +
    + + + +

    I only

    +
    + +

    You can not use a Boolean expression after an else.

    +
    +
    + + +

    II only

    +
    + +

    Yes, II will give the same result.

    +
    +
    + + +

    III only

    +
    + +

    No, III will not give the same result. The first if statement will be true, but the second will be false, so the else part will execute.

    +
    +
    + + +

    II and III

    +
    + +

    No, Although II is correct III will not give the same result. Try it.

    +
    +
    + + +

    I, II, and III

    +
    + +

    No, in I you can not have a Boolean expression after an else.

    +
    +
    +
    +
    + + +

    What will the following code print if x = 3, y = 5, and z = 2?

    + + +if x < y and x < z: + print("a") +elif y < x and y < z: + print("b") +else: + print("c") + + +
    + + + +

    a

    +
    + +

    While the value in x is less than the value in y (3 is less than 5) it is not less than the value in z (3 is not less than 2).

    +
    +
    + + +

    b

    +
    + +

    The value in y is not less than the value in x (5 is not less than 3).

    +
    +
    + + +

    c

    +
    + +

    Since the first two Boolean expressions are false the else will be executed.

    +
    +
    +
    +
    + + +

    Create one conditional to find whether false is in string str1. If so, assign variable output the string False. You aren't you?. Check to see if true is in string str1 and if it is then assign True! You are you! to the variable output. If neither are in str1, assign Neither true nor false! to output.

    +
    + + +str1 = "Today you are you! That is truer than true! There is no one alive who is you-er than you!" + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(output, "True! You are you!", "Testing that output has the correct value, given the str1 provided.") + self.assertIn("else", self.getEditorText(), "Testing output (Don't worry about actual and expected values).") + self.assertIn("elif", self.getEditorText(), "Testing output (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    Create an empty list called resps. Using the list percent_rain, for each percent, if it is above 90, add the string ‘Bring an umbrella.' to resps, otherwise if it is above 80, add the string ‘Good for the flowers?' to resps, otherwise if it is above 50, add the string ‘Watch out for clouds!' to resps, otherwise, add the string ‘Nice day!' to resps. Note: if you're sure you've got the problem right but it doesn't pass, then check that you've matched up the strings exactly.

    +
    + + +percent_rain = [94.3, 45, 100, 78, 16, 5.3, 79, 86] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(resps, ['Bring an umbrella.','Nice day!','Bring an umbrella.','Watch out for clouds!',"Nice day!",'Nice day!','Watch out for clouds!',"Good for the flowers?"], "Testing the value of resps") + +myTests().main() + + +
    + + +

    We have created conditionals for you to use. Do not change the provided conditional statements. Find an integer value for x that will cause output to hold the values True and None. (Drawing diagrams or flow charts for yourself may help!)

    +
    + + +x = +output = [] + +if x > 63: + output.append(True) +elif x > 55: + output.append(False) +else: + output.append("Neither") + +if x > 67: + output.append(True) +else: + output.append(None) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testSixA(self): + self.assertEqual(output, [True, None], "Testing that value of output is correct.") + + def testSixB(self): + self.assertEqual(x in [64, 65, 66, 67], True, "Testing that value of x is reasonable for this problem") + +myTests().main() + + +
    +
    diff --git a/pretext/Conditionals/ConditionalExecutionBinarySelection.ptx b/pretext/Conditionals/ConditionalExecutionBinarySelection.ptx new file mode 100644 index 00000000..c0c0e630 --- /dev/null +++ b/pretext/Conditionals/ConditionalExecutionBinarySelection.ptx @@ -0,0 +1,243 @@ + +
    + Conditional Execution: Binary Selection +
    diff --git a/pretext/Conditionals/Exercises.ptx b/pretext/Conditionals/Exercises.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Conditionals/Exercises.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Conditionals/Glossary.ptx b/pretext/Conditionals/Glossary.ptx new file mode 100644 index 00000000..2311f84e --- /dev/null +++ b/pretext/Conditionals/Glossary.ptx @@ -0,0 +1,59 @@ + +
    + Glossary + + + block +

    A group of consecutive statements with the same indentation.

    +
    + + body +

    The block of statements in a compound statement that follows the + header.

    +
    + + boolean values +

    A value that is either True or False. True and False must be capitalized to be considered Boolean.

    +
    + + branch +

    One of the possible paths of the flow of execution determined by + conditional execution.

    +
    + + chained conditional +

    A conditional branch with more than two possible flows of execution. In + Python chained conditionals are written with if ... elif ... else + statements.

    +
    + + comparison operator +

    One of the operators that compares two values: ==, !=, >, + <, >=, and <=.

    +
    + + condition +

    The boolean expression in a conditional statement that determines which + branch is executed.

    +
    + + conditional statement +

    A statement that controls the flow of execution depending on some + condition. In Python the keywords if, elif, and else are + used for conditional statements.

    +
    + + logical operators +

    and, or and not are logical operators used to evaluate expressions. Their semantic meaning is similar to their English meaning.

    +
    + + nesting +

    One program structure within another, such as a conditional statement + inside a branch of another conditional statement.

    +
    + + unary selection +

    A selection statement in which there is only an if statement and the else statement is omitted entirely. In an unary selection, the statements are only executed if the condition evaluates to true, otherwise the program continues to the body following the if statement.

    +
    +
    +
    diff --git a/pretext/Conditionals/Logicaloperators.ptx b/pretext/Conditionals/Logicaloperators.ptx new file mode 100644 index 00000000..37cd1b8c --- /dev/null +++ b/pretext/Conditionals/Logicaloperators.ptx @@ -0,0 +1,252 @@ + +
    + Logical operators +

    There are three logical operators: and, or, and not. + All three operators take boolean operands and produce boolean values. + The semantics (meaning) of these operators is similar to their meaning in English:

    +

    +

    +

    +

    Look at the following example. See if you can predict the output. Then, Run to see if your predictions were + correct:

    + + +x = True +y = False +print(x or y) +print(x and y) +print(not x) + + +

    Although you can use boolean operators with simple boolean literals or variables as in the above + example, they are often combined with the comparison operators, as in this example. Again, before you + run this, see if you can predict the outcome:

    + + +x = 5 +print(x > 0 and x < 10) + +n = 25 +print(n % 2 == 0 or n % 3 == 0) + + +

    The expression x > 0 and x < 10 is True only if x is greater than 0 and + at the same time, x is less than 10. In other words, this expression is True if + x is between 0 and 10, not including the endpoints.

    + + Common Mistake! +

    There is a very common mistake that occurs when programmers try to write boolean expressions. For example, what if + we have a variable number and we want to check to see if its value is 5 or 6. In words we might say: number + equal to 5 or 6. However, if we translate this into Python, number == 5 or 6, it will not yield correct + results. The or operator must have a complete equality check on both sides. The correct way to write this is + number == 5 or number == 6. Remember that both operands of or must be booleans in order to yield proper results.

    +
    + + Smart Evaluation +

    Python is smart about the way it evaluates expressions using boolean operators. Consider the following example:

    +
    answer = input('Continue?')
    +if answer == 'Y' or answer == 'y':
    +   print('Continuing!')
    +

    There are two operands for the or operator here: answer == 'Y' and 'answer == 'y'. Python evaluates from + left to right, and if the first operand for or evaluates to True, Python doesn't bother evaluating the second + operand, because it knows the result must be True (recall that if either operand for or is True, the + result is True). So, if the user enters Y, Python first evaluates answer == +'Y', determines that it is True, and doesn't bother to check to see if answer == 'y' is True; it just + concludes that the entire condition is True and executes the print statement.

    +

    In a similar fashion, with the and operator, if the first operand evaluates to False, Python doesn't check the + second operand's value, because it can conclude that the result must be False.

    +

    This behavior, in which Python in some cases skips the evaluation of the second operand to and and or, is called + short-circuit boolean evaluation. You don't have to do anything to make Python do this; it's the way Python works. + It saves a little processing time. And, as a special bonus, you can take advantage of Python's short-circuiting behavior + to shorten your code. Consider the following example:

    + + +total_weight = int(input('Enter total weight of luggage:')) +num_pieces = int(input('Number of pieces of luggage?')) + +if total_weight / num_pieces > 50: + print('Average weight is greater than 50 pounds -> $100 surcharge.') + +print('Luggage check complete.') + + +

    This code checks to see if the average weight of a given number of pieces of luggage is greater than 50 pounds. However, + there is a potential crash situation here. If the user enters 0 for num_pieces, the program will crash with a + divide by zero error. Try it out to see it happen.

    +

    To prevent the crash, you might add an extra if statement to check for zero:

    +
    if num_pieces != 0:
    +   if total_weight / num_pieces > 50:
    +      print('Average weight is greater than 50 pounds -> $100 surcharge.')
    +

    Now, the division will not occur if num_pieces is zero, and a potential runtime crash has been averted. Good job!

    +

    We can shorten this example to a single if statement if we do it carefully. Anytime you have two nested if + statements as in the example above, you can combine them into a single if statement by joining the conditions using + the and operator. Consider the version below, and think about why this if statement is equivalent in its behavior to + the previous version with two nested if statements:

    + + +total_weight = int(input('Enter total weight of luggage:')) +num_pieces = int(input('Number of pieces of luggage?')) + +if num_pieces != 0 and total_weight / num_pieces > 50: + print('Average weight is greater than 50 pounds -> $100 surcharge.') + +print('Luggage check complete.') + + +

    But wait a minute: is this code safe? Try running the program and entering the value 500 for total_weight and the value 5 for num_pieces. + Then, try it again using the value 0 for num_pieces. There should be no crash.

    +

    Next, try altering the code and reversing the order of the if conditions:

    +
    if total_weight / num_pieces > 50 and num_pieces != 0:
    +   print('Average weight is greater than 50 pounds -> $100 surcharge.')
    +

    Run the program again, performing the same two tests. This time, you should observe a crash when you enter 0 for + num_pieces. Can you analyze why the first version did not crash, but the second one does?

    +

    In the second version, when evaluating left-to-right, the division by zero occurs before Python evaluates the comparison + num_pieces != 0. When joining two if statements into a single if statement, you must be sure to put the + condition from the first if statement on the left-hand side of the and operator, and the other condition on the + right-hand side, in order to get the same effect.

    +

    To summarize this discussion on smart evaluation, keep in mind that when you are performing potentially dangerous + operations in an if statement or while loop using boolean logic with and or or, order matters!

    +

    + Check your understanding +

    + + +

    What is the correct Python expression for checking to see if a number stored in a variable x is between 0 and 5.

    +
    + + + +

    x > 0 and < 5

    +
    + +

    Each comparison must be between exactly two values. In this case the right-hand expression < 5 lacks a value on its left.

    +
    +
    + + +

    0 < x < 5

    +
    + +

    Although most other programming languages do not allow this syntax, in Python, this syntax is allowed. Even though it is possible to use this format, you should not use it all the time. Instead, make multiple comparisons by using and or or.

    +
    +
    + + +

    x > 0 or x < 5

    +
    + +

    Although this is legal Python syntax, the expression is incorrect. It will evaluate to true for all numbers that are either greater than 0 or less than 5. Because all numbers are either greater than 0 or less than 5, this expression will always be True.

    +
    +
    + + +

    x > 0 and x < 5

    +
    + +

    Yes, with an ``and`` keyword both expressions must be true so the number must be greater than 0 an less than 5 for this expression to be true.

    +
    +
    +
    +
    + + +

    Which of the following may result in a crash at runtime if the user presses Enter without typing a response?

    +

    Option A)

    +
    yesno = input('Enter Yes or No:')
    +if yesno[0] == 'Y' and len(yesno) > 0:
    +   print('Yes!')
    +

    Option B)

    +
    yesno = input('Enter Yes or No:')
    +if len(yesno) > 0 and yesno[0] == 'Y':
    +   print('Yes!')
    +
    + + + +

    Option A

    +
    + +

    Correct! The comparison yesno[0] == 'Y' will crash if yesno is an empty string.

    +
    +
    + + +

    Option B

    +
    + +

    Incorrect. If len(yesno) > 0 is False, the potentially unsafe comparison yesno[0] == 'Y' will not be evaluated.

    +
    +
    +
    +
    + + +

    Consider the following fragment containing a nested if statement to prevent a crash in the event + the user enters an empty response for yesno:

    +
    yesno = input('Enter Yes or No:')
    +if len(yesno) > 0:
    +   if yesno[0] == 'Y':
    +      print('Yes!')
    +

    Which of the following is the correct way to combine the nested if into a single if statement that executes + identically to the nested if statements?

    +

    Option A)

    +
    if yesno[0] == 'Y' and len(yesno) > 0:
    +   print('Yes!')
    +

    Option B)

    +
    if len(yesno) > 0 and yesno[0] == 'Y':
    +   print('Yes!')
    +

    Option C)

    +
    if yesno[0] == 'Y' or len(yesno) > 0:
    +   print('Yes!')
    +

    Option D)

    +
    if len(yesno) > 0 or yesno[0] == 'Y':
    +   print('Yes!')
    +
    + + + +

    Option A

    +
    + +

    Incorrect. The comparison yesno[0] == 'Y' will crash if yesno is an empty string.

    +
    +
    + + +

    Option B

    +
    + +

    Correct! Use the and operator to join nested if statements into a single statement, with the first if condition on the left-hand side.

    +
    +
    + + +

    Option C

    +
    + +

    Incorrect. The comparison yesno[0] == 'Y' will crash if yesno is an empty string.

    +
    +
    + + +

    Option D

    +
    + +

    Incorrect. The comparison yesno[0] == 'Y' will crash if yesno is an empty string.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Conditionals/Nestedconditionals.ptx b/pretext/Conditionals/Nestedconditionals.ptx new file mode 100644 index 00000000..80d0c090 --- /dev/null +++ b/pretext/Conditionals/Nestedconditionals.ptx @@ -0,0 +1,95 @@ + +
    + Nested conditionals +

    One conditional can also be nested within another. For example, assume we have two integer variables, x and + y. The following pattern of selection shows how we might decide how they are related to each other.

    + + +if x < y: + print("x is less than y") +else: + if x > y: + print("x is greater than y") + else: + print("x and y must be equal") + + +

    The outer conditional contains two branches. + The second branch (the else from the outer) contains another if statement, which + has two branches of its own. Those two branches could contain + conditional statements as well.

    +

    The flow of control for this example can be seen in this flowchart illustration.

    + +

    Here is a complete program that defines values for x and y. Run the program and see the result. Then change the values of the variables to change the flow of control.

    + + +x = 10 +y = 10 + +if x < y: + print("x is less than y") +else: + if x > y: + print("x is greater than y") + else: + print("x and y must be equal") + + + +

    In some programming languages, matching the if and the else is a problem. However, in Python this is not + the case. The indentation pattern tells us exactly which else belongs to which if.

    +
    +

    If you are still a bit unsure, here is the same selection as part of a codelens example. Step through it to see how the correct print is chosen.

    + + +x = 10 +y = 10 + +if x < y: + print("x is less than y") +else: + if x > y: + print("x is greater than y") + else: + print("x and y must be equal") + + +

    + Check your understanding +

    + + +

    Will the following code cause an error?

    + + +x = -10 +if x < 0: + print("The negative number ", x, " is not valid here.") +else: + if x > 0: + print(x, " is a positive number") + else: + print(x," is 0") + + +
    + + + +

    No

    +
    + +

    This is a legal nested if-else statement. The inner if-else statement is contained completely within the body of the outer else-block.

    +
    +
    + + +

    Yes

    +
    + +

    This is a legal nested if-else statement. The inner if-else statement is contained completely within the body of the outer else-block.

    +
    +
    +
    +
    +
    diff --git a/pretext/Conditionals/OmittingtheelseClauseUnarySelection.ptx b/pretext/Conditionals/OmittingtheelseClauseUnarySelection.ptx new file mode 100644 index 00000000..56ec06d9 --- /dev/null +++ b/pretext/Conditionals/OmittingtheelseClauseUnarySelection.ptx @@ -0,0 +1,114 @@ + +
    + Omitting the <c>else</c> Clause: Unary Selection +
    diff --git a/pretext/Conditionals/PrecedenceofOperators.ptx b/pretext/Conditionals/PrecedenceofOperators.ptx new file mode 100644 index 00000000..f68bd00b --- /dev/null +++ b/pretext/Conditionals/PrecedenceofOperators.ptx @@ -0,0 +1,166 @@ + +
    + Precedence of Operators +

    Arithmetic operators take precedence over logical operators. Python will always evaluate the arithmetic operators first (** is highest, then multiplication/division, then addition/subtraction). Next comes the relational operators. Finally, the logical operators are done last. This means that the expression x*5 >= 10 and y-6 <= 20 will be evaluated so as to first perform the arithmetic and then check the relationships. The and will be done last. Many programmers might place parentheses around the two relational expressions, (x*5 >= 10) and (y-6 <= 20). It is not necessary to do so, but causes no harm and may make it easier for people to read and understand the code.

    +

    The following table summarizes the operator precedence from highest to lowest. A complete table for the entire language can be found in the Python Documentation.

    + + + + + Level + + + Category + + + Operators + + + + + 7(high) + + + exponent + + + ** + + + + + 6 + + + multiplication + + + *,/,//,% + + + + + 5 + + + addition + + + +,- + + + + + 4 + + + relational + + + ==,!=,<=,>=,>,< + + + + + 3 + + + logical + + + not + + + + + 2 + + + logical + + + and + + + + + 1(low) + + + logical + + + or + + + +
    + +

    This workspace is provided for your convenience. You can use this activecode window to try out anything you like.

    + + + + + + +
    + + Common Mistake! +

    Students often incorrectly combine the in and or operators. For example, if they want to check + that the letter x is inside of either of two variables then they tend to write it the following + way: 'x' in y or z

    +

    Written this way, the code would not always do what the programmer intended. This is because the + in operator is only on the left side of the or statement. It doesn't get implemented on both + sides of the or statement. In order to properly check that x is inside of either variable, the in + operator must be used on both sides which looks like this:

    + + +'x' in y or 'x' in z + + +
    +

    + Check your understanding +

    + + +

    Which of the following properly expresses the precedence of operators (using parentheses) in the following expression: 5*3 > 10 and 4+6==11

    +
    + + + +

    ((5*3) > 10) and ((4+6) == 11)

    +
    + +

    Yes, * and + have higher precedence, followed by > and ==, and then the keyword "and"

    +
    +
    + + +

    (5*(3 > 10)) and (4 + (6 == 11))

    +
    + +

    Arithmetic operators (*, +) have higher precedence than comparison operators (>, ==)

    +
    +
    + + +

    ((((5*3) > 10) and 4)+6) == 11

    +
    + +

    This grouping assumes Python simply evaluates from left to right, which is incorrect. It follows the precedence listed in the table in this section.

    +
    +
    + + +

    ((5*3) > (10 and (4+6))) == 11

    +
    + +

    This grouping assumes that "and" has a higher precedence than ==, which is not true.

    +
    +
    +
    +
    +

    Here is an animation for the above expression:

    + +
    diff --git a/pretext/Conditionals/TheAccumulatorPatternwithConditionals.ptx b/pretext/Conditionals/TheAccumulatorPatternwithConditionals.ptx new file mode 100644 index 00000000..57222f21 --- /dev/null +++ b/pretext/Conditionals/TheAccumulatorPatternwithConditionals.ptx @@ -0,0 +1,221 @@ + +
    + The Accumulator Pattern with Conditionals +

    Sometimes when we're accumulating, we don't want to add to our accumulator every time we iterate. + Consider, for example, the following program which counts the number of letters in a phrase.

    + + +phrase = "What a wonderful day to program" +tot = 0 +for char in phrase: + if char != " ": + tot = tot + 1 +print(tot) + + +

    Here, we initialize the accumulator variable to be zero on line two.

    +

    We iterate through the sequence (line 3).

    +

    The update step happens in two parts. First, we check to see if the value of char is not a space. If + it is not a space, then we update the value of our accumulator variable tot (on line 6) by adding one to + it. If that conditional proves to be False, which means that char is a space, then we don't update tot + and continue the for loop. We could have written tot = tot + 1 or tot += 1, either is fine.

    +

    At the end, we have accumulated a the total number of letters in the phrase. Without using the conditional, + we would have only been able to count how many characters there are in the string and not been able to + differentiate between spaces and non-spaces.

    +

    We can use conditionals to also count if particular items are in a string or list. The following code finds all occurrences of vowels in the following string.

    + + +s = "what if we went to the zoo" +x = 0 +for i in s: + if i in ['a', 'e', 'i', 'o', 'u']: + x += 1 +print(x) + + +

    We can also use == to execute a similar operation. Here, we'll check to see if the character we are iterating over is + an o. If it is an o then we will update our counter.

    + a gif that shows code to check that "o" is in the phrase "onomatopoeia". + + Accumulating the Max Value +

    We can also use the accumulation pattern with conditionals to find the maximum or minimum value. Instead of + continuing to build up the accumulator value like we have when counting or finding a sum, we can reassign the + accumulator variable to a different value.

    +

    The following example shows how we can get the maximum value from a list of integers.

    + + +nums = [9, 3, 8, 11, 5, 29, 2] +best_num = 0 +for n in nums: + if n > best_num: + best_num = n +print(best_num) + + +

    Here, we initialize best_num to zero, assuming that there are no negative numbers in the list.

    +

    In the for loop, we check to see if the current value of n is greater than the current value of best_num. + If it is, then we want to update best_num so that it now is assigned the higher number. Otherwise, we + do nothing and continue the for loop.

    +

    You may notice that the current structure could be a problem. If the numbers were all negative what would + happen to our code? What if we were looking for the smallest number but we initialized best_num with + zero? To get around this issue, we can initialize the accumulator variable using one of the numbers in the + list.

    + + +nums = [9, 3, 8, 11, 5, 29, 2] +best_num = nums[0] +for n in nums: + if n > best_num: + best_num = n +print(best_num) + + +

    The only thing we changed was the value of best_num on line 2 so that the value of best_num is the + first element in nums, but the result is still the same!

    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +s = "We are learning!" +x = 0 +for i in s: + if i in ['a', 'b', 'c', 'd', 'e']: + x += 1 +print(x) + + +
    + + + +

    2

    +
    + +

    Though only two of the letters in the list are found, we count them each time they appear.

    +
    +
    + + +

    5

    +
    + +

    Yes, we add to x each time we come across a letter in the list.

    +
    +
    + + +

    0

    +
    + +

    Check again what the conditional is evaluating. The value of i will be a character in the string s, so what will happen in the if statement?

    +
    +
    + + +

    There is an error in the code so it cannot run.

    +
    + +

    There are no errors in this code.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +list= [5, 2, 1, 4, 9, 10] +min_value = 0 +for item in list: + if item < min_value: + min_value = item +print(min_value) + + +
    + + + +

    10

    +
    + +

    Not quite. What is the conditional checking?

    +
    +
    + + +

    1

    +
    + +

    min_value was set to a number that was smaller than any of the numbers in the list, so it was never updated in the for loop.

    +
    +
    + + +

    0

    +
    + +

    Yes, min_value was set to a number that was smaller than any of the numbers in the list, so it was never updated in the for loop.

    +
    +
    + + +

    There is an error in the code so it cannot run.

    +
    + +

    The code does not have an error that would prevent it from running.

    +
    +
    +
    +
    + + +

    For each string in the list words, find the number of characters in the string. If the number of characters in the string is greater than 3, add 1 to the variable num_words so that num_words should end up with the total number of words with more than 3 characters.

    +
    + + +words = ["water", "chair", "pen", "basket", "hi", "car"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(num_words, 3, "Testing that num_words has the correct value.") + +myTests().main() + + +
    + + +

    Challenge For each word in words, add ‘d' to the end of the word if the word ends in e to make it past tense. Otherwise, add ‘ed' to make it past tense. Save these past tense words to a list called past_tense.

    +
    + + +words = ["adopt", "bake", "beam", "confide", "grill", "plant", "time", "wave", "wish"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testNine(self): + self.assertEqual(past_tense, ['adopted', 'baked', 'beamed', 'confided', 'grilled', 'planted', 'timed', 'waved', 'wished'], "Testing that the past_tense list is correct.") + self.assertIn("else", self.getEditorText(), "Testing output (Don't worry about actual and expected values).") + self.assertIn("for", self.getEditorText(), "Testing output (Don't worry about actual and expected values).") + +myTests().main() + + +
    +
    +
    diff --git a/pretext/Conditionals/Theinandnotinoperators.ptx b/pretext/Conditionals/Theinandnotinoperators.ptx new file mode 100644 index 00000000..5bd802f0 --- /dev/null +++ b/pretext/Conditionals/Theinandnotinoperators.ptx @@ -0,0 +1,50 @@ + +
    + The <c>in</c> and <c>not in</c> operators +

    The in operator tests if one string is a substring of another:

    + + +print('p' in 'apple') +print('i' in 'apple') +print('ap' in 'apple') +print('pa' in 'apple') + + +

    Note that a string is a substring of itself, and the empty string is a + substring of any other string. (Also note that computer scientists + like to think about these edge cases quite carefully!)

    + + +print('a' in 'a') +print('apple' in 'apple') +print('' in 'a') +print('' in 'apple') + + +

    The not in operator returns the logical opposite result of in.

    + + +print('x' not in 'apple') + + +

    We can also use the in and not in operators on lists!

    + + +print("a" in ["a", "b", "c", "d"]) +print(9 in [3, 2, 9, 10, 9.0]) +print('wow' not in ['gee wiz', 'gosh golly', 'wow', 'amazing']) + + +

    However, remember how you were able to check to see if an a was in apple? + Let's try that again to see if there's an a somewhere in the following list.

    + + +print("a" in ["apple", "absolutely", "application", "nope"]) + + +

    Clearly, we can tell that a is in the word apple, and absolutely, and application. For some reason + though, the Python interpreter returns False. Why is that? When we use the in and not in + operators on lists, Python checks to see if the item on the left side of the expression is equivalent + to an element in the item on the right side of the expression. In this case, Python is checking + whether or not an element of the list is the string a - nothing more or less than that.

    +
    diff --git a/pretext/Conditionals/WPSettingUpConditionals.ptx b/pretext/Conditionals/WPSettingUpConditionals.ptx new file mode 100644 index 00000000..3efe4ad0 --- /dev/null +++ b/pretext/Conditionals/WPSettingUpConditionals.ptx @@ -0,0 +1,109 @@ + +
    + 👩‍💻 Setting Up Conditionals +

    Before writing your conditionals, it can be helpful to make your own flowchart that will + plot out the flow of each condition. By writing out the flow, you can better determine how + complex the set of conditionals will be as well as check to see if any condition is not + taken care of before you begin writing it out.

    +

    To make sure that your code covers all of the conditions that you intend for it to cover, you + should add comments for each clause that explains what that clause is meant to do. Then, you + should add tests for each possible path that the program could go though. What leads + to certain conditional statements being executed? Is that what you intended?

    + + Choosing your type of Conditional +

    When adding conditionals to your program, you should also consider the kinds of conditionals + that are at your disposal and what would fit best.

    + +

    Though you'll use them often, remember that conditional statements don't always need an else clause. + When deciding the flow, ask yourself what you want to have happen under a certain condition. + For example, if you wanted to find all of the words that have the letter ‘n' in them. If there's nothing + that needs to happen when a word does not contain the letter ‘n' then you won't need an else + clause. The program should just continue onward!

    + + +

    What is the best set of conditonal statements provided based on the following prompt? You want to keep track of all the words that have the letter ‘t' and in a separate variable you want to keep track of all the words that have the letter ‘z' in them.

    +
    + + + +

    If statement - Else statement

    +
    + +

    Using if/else either uses an unnecessary else statement or would improperly keep track of one of the accumulator variables.

    +
    +
    + + +

    If statement - Elif statement

    +
    + +

    Using if/elif means that words that have both a "t" and a "z" would not be propperly counted by the two variables.

    +
    +
    + + +

    If statement - If statement

    +
    + +

    Yes, two if statements will keep track of - and properly update - the two different accumulator variables.

    +
    +
    + + +

    If statement - Elif statemenet - Else statement

    +
    + +

    Using if/elif/else here will provide an unnecessary else statement and improperly update one of the accumulator variables in the case where a word has both a "t" and a "z".

    +
    +
    +
    +
    + + +

    Select the most appropriate set of conditonal statements for the situation described: You want to keep track of all the words that contain both t and z.

    +
    + + + +

    If statement - Elif statemenet - Else statement

    +
    + +

    The elif and else statements are both unnecessary.

    +
    +
    + + +

    If statement - Else statement

    +
    + +

    The else statement is unnecessary.

    +
    +
    + + +

    If statement - Nested If statement

    +
    + +

    Though you could write a set of conditional statements like this and answer the prompt, there is a more concise way.

    +
    +
    + + +

    If statement

    +
    + +

    Yes, this is the most concise way of writing a conditional for that prompt.

    +
    +
    + + +

    If statement - Nested If statement - Else statement

    +
    + +

    The else statement is unnecessary.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Conditionals/intro-TurtlesandConditionals.ptx b/pretext/Conditionals/intro-TurtlesandConditionals.ptx new file mode 100644 index 00000000..64153d79 --- /dev/null +++ b/pretext/Conditionals/intro-TurtlesandConditionals.ptx @@ -0,0 +1,112 @@ + +
    + Intro: What we can do with Turtles and Conditionals +

    So far, our programs have either been a series of statements which always execute sequentially or operations that are applied to each item in an iterable. Yet programs frequently need to be more subtle with their behavior. For example, a messaging app might only set a message's title bold if it has not been read by the user. Or a video game needs to update the position of all the characters that are not asleep. This is done with something called a selection or a conditional statement.

    +

    In the context of turtle drawings, using this kind of statement will allow us to check conditions and change the behavior of the program accordingly

    + + +import turtle +wn = turtle.Screen() + +amy = turtle.Turtle() +amy.pencolor("Pink") +amy.forward(50) +if amy.pencolor() == "Pink": + amy.right(60) + amy.forward(100) +else: + amy.left(60) + amy.forward(100) + +kenji = turtle.Turtle() +kenji.forward(60) +if kenji.pencolor() == "Pink": + kenji.right(60) + kenji.forward(100) +else: + kenji.left(60) + kenji.forward(100) + + +

    In the above code, we first set amy's pen color to be Pink and then move her forward. Next we want one of + two actions to happen, either amy should move right and then forward, or left and then forward. The direction + that we want her to go in depends on her pen color. If her pen color is set to pink - which is determined by + writing amy.pencolor() == "Pink" which checks to see if the value returned by amy.pencolor() is the + equivalent to the string Pink - then we should have her move right and forward. Else (or otherwise) she + should move left and forward. Both things can't happen though. She can't move right, forward and left, + forward. We then do the same thing for kenji, though in this case, we didn't change kenji's pen color.

    +

    It might seem a bit odd to add the conditionals in this example. Wouldn't we already know that we set up amy + and kenji's colors, so why would we need a conditional? While it's true that this isn't the best place to + use a conditional, we can combine conditional statements with for loops to make something pretty cool!

    + + +import turtle +wn = turtle.Screen() + +amy = turtle.Turtle() +amy.pencolor("Pink") +amy.right(170) + +colors = ["Purple", "Yellow", "Orange", "Pink", "Orange", "Yellow", "Purple", "Orange", "Pink", "Pink", "Orange", "Yellow", "Purple", "Orange", "Purple", "Yellow", "Orange", "Pink", "Orange", "Purple", "Purple", "Yellow", "Orange", "Pink", "Orange", "Yellow", "Purple", "Yellow"] + + +for color in colors: + if amy.pencolor() == "Purple": + amy.forward(50) + amy.right(59) + elif amy.pencolor() == "Yellow": + amy.forward(65) + amy.left(98) + elif amy.pencolor() == "Orange": + amy.forward(30) + amy.left(60) + elif amy.pencolor() == "Pink": + amy.forward(50) + amy.right(57) + + amy.pencolor(color) + + +

    The above example combines a for loop with a set of conditional statements. Here, we loop through a list of + colors and each iteration checks to see what amy's pen color is. Depending on the pen color, the turtle will + move in a certain direction, for a certain distance. Before the for loop iterates, amy's pen color is changed + to whatever color is in the for loop and it continues. Note how the color doesn't change until the end, + so that we can start using whatever color amy is set to initally. This means that the last color in the list + colors will not be used, though you can see how the icon changes to the appropriate color.

    +

    This chapter will further detail how to use conditional statements.

    + + Learning Goals +

    +

      +
    • +

      To understand boolean expressions and logical operators

      +
    • +
    • +

      To understand conditional execution

      +
    • +
    • +

      To be able to write a boolean function

      +
    • +
    • +

      To know when to use binary, unary, chained and nested conditional statements

      +
    • +
    +

    +
    + + Objectives +

    +

      +
    • +

      To properly evaluate a (compound) boolean expression

      +
    • +
    • +

      To use parenthesis to properly demonstrate operator precedence

      +
    • +
    • +

      To use conditional statements to properly branch code

      +
    • +
    +

    +
    +
    diff --git a/pretext/Conditionals/toctree.ptx b/pretext/Conditionals/toctree.ptx new file mode 100644 index 00000000..0c6de0bd --- /dev/null +++ b/pretext/Conditionals/toctree.ptx @@ -0,0 +1,18 @@ + + + Conditionals + + + + + + + + + + + + + + + diff --git a/pretext/Conditionals/week3a1.ptx b/pretext/Conditionals/week3a1.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Conditionals/week3a1.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Debugging/BeginningtipsforDebugging.ptx b/pretext/Debugging/BeginningtipsforDebugging.ptx new file mode 100644 index 00000000..c695596a --- /dev/null +++ b/pretext/Debugging/BeginningtipsforDebugging.ptx @@ -0,0 +1,30 @@ + +
    + 👩‍💻 Beginning tips for Debugging +

    Debugging a program is a different way of thinking than writing a program. The process of debugging is much more like being a detective. Here are a few rules to get you thinking about debugging.

    +

    +

      +
    1. +

      Everyone is a suspect (Except Python)! It's common for beginner programmers to blame Python, but that should be your last resort. Remember that Python has been used to solve CS1 level problems millions of times by millions of other programmers. So, Python is probably not the problem.

      +
    2. +
    3. +

      Check your assumptions. At this point in your career you are still developing your mental model of how Python does its work. Its natural to think that your code is correct, but with debugging you need to make your code the primary suspect. Even if you think it is right, you should verify that it really is by liberally using print statements to verify that the values of variables really are what you think they should be. You'll be surprised how often they are not.

      +
    4. +
    5. +

      Find clues. This is the biggest job of the detective and right now there are two important kinds of clues for you to understand.

      +

      +

        +
      • +

        Error Messages

        +
      • +
      • +

        Print Statements

        +
      • +
      +

      +
    6. +
    +

    +

    Three kinds of errors can occur in a program: syntax errors, runtime errors, and semantic errors. It is useful to distinguish + between them in order to track them down more quickly.

    +
    diff --git a/pretext/Debugging/Exercises.ptx b/pretext/Debugging/Exercises.ptx new file mode 100644 index 00000000..153515a2 --- /dev/null +++ b/pretext/Debugging/Exercises.ptx @@ -0,0 +1,12 @@ + + + Exercises + + Contributed Exercises + {% for q in questions: %} + <div class='oneq full-width'> + {{ q['htmlsrc']|safe }} + </div> +{% endfor %} + + diff --git a/pretext/Debugging/KnowyourerrorMessages.ptx b/pretext/Debugging/KnowyourerrorMessages.ptx new file mode 100644 index 00000000..e6f36bfd --- /dev/null +++ b/pretext/Debugging/KnowyourerrorMessages.ptx @@ -0,0 +1,488 @@ + +
    + 👩‍💻 Know Your Error Messages +

    Many problems in your program will lead to an error message. For example as I was + writing and testing this chapter of the book I wrote the following version of the + example program in the previous section.

    + + +current_time_str = input("What is the current time (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait") + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_int) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + + +

    Can you see what is wrong, just by looking at the code? Maybe, maybe not. Our brain + tends to see what we think is there, so sometimes it is very hard to find the problem + just by looking at the code. Especially when it is our own code and we are sure that + we have done everything right!

    +

    Let's try the program again, but this time in an activecode:

    + + +current_time_str = input("What is the current time (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait") + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_int) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + + +

    Aha! Now we have an error message that might be useful. The name error tells us + that wait_time_int is not defined. It also tells us that the error is on line 5. + That's really useful information. Now look at line five and you will see that + wait_time_int is used on both the left and the right hand side of the assignment + statement.

    + +

    The error descriptions you see in activecode may be different (and more understandable!) than in a regular + Python interpreter. The interpreter in activecode is limited in many ways, but it is intended for beginners, + including the wording chosen to describe errors.

    +
    + + +

    Which of the following explains why wait_time_int = int(wait_time_int) is an error?

    +
    + + + +

    You cannot use a variable on both the left and right hand sides of an assignment statement.

    +
    + +

    No, You can, as long as all the variables on the right hand side already have values.

    +
    +
    + + +

    wait_time_int does not have a value so it cannot be used on the right hand side.

    +
    + +

    Yes. Variables must already have values in order to be used on the right hand side.

    +
    +
    + + +

    This is not really an error, Python is broken.

    +
    + +

    No, No, No!

    +
    +
    +
    +
    +

    In writing and using this book over the last few years we have collected a lot of + statistics about the programs in this book. Here are some statistics about error + messages for the exercises in this book.

    + +

    Most of the error messages encountered are SyntaxError, + TypeError, NameError, or ValueError. We will look at these errors in three stages:

    +

    +

    +

    + + SyntaxError +

    Syntax errors happen when you make an error in the syntax of your program. Syntax + errors are like making grammatical errors in writing. If you don't use periods and + commas in your writing then you are making it hard for other readers to figure out + what you are trying to say. Similarly Python has certain grammatical rules that must + be followed or else Python can't figure out what you are trying to say.

    +

    Usually SyntaxErrors can be traced back to missing punctuation characters, such as + parentheses, quotation marks, or commas. Remember that in Python commas are used to + separate parameters to functions. Paretheses must be balanced, or else Python thinks + that you are trying to include everything that follows as a parameter to some function.

    +

    Here are a couple examples of Syntax errors in the example program we have been using. + See if you can figure out what caused them.

    + + +

    Find and fix the error in the following code.

    +
    + + +current_time_str = input("What is the current time (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait" + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + + + + current_time_str = input("What is the current time (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait" + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + Since the error message points us to line 4 this might be a bit confusing. If + you look at line four carefully you will see that there is no problem with the + syntax. So, in this case the next step should be to back up and look at the + previous line. In this case if you look at line 2 carefully you will see that + there is a missing right parenthesis at the end of the line. Remember that + parentheses must be balanced. Since Python allows statements to continue over + multiple lines inside parentheses python will continue to scan subsequent + lines looking for the balancing right parenthesis. However in this case it + finds the name current_time_int and it will want to interpret that as + another parameter to the input function. But, there is not a comma to + separate the previous string from the variable so as far as Python is + concerned the error here is a missing comma. From your perspective its a + missing parenthesis. + + +current_time_str = input("What is the current time (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait" + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + +

    Since the error message points us to line 4 this might be a bit confusing. If + you look at line four carefully you will see that there is no problem with the + syntax. So, in this case the next step should be to back up and look at the + previous line. In this case if you look at line 2 carefully you will see that + there is a missing right parenthesis at the end of the line. Remember that + parentheses must be balanced. Since Python allows statements to continue over + multiple lines inside parentheses python will continue to scan subsequent + lines looking for the balancing right parenthesis. However in this case it + finds the name current_time_int and it will want to interpret that as + another parameter to the input function. But, there is not a comma to + separate the previous string from the variable so as far as Python is + concerned the error here is a missing comma. From your perspective its a + missing parenthesis.

    +
    +
    +

    Finding Clues How can you help yourself find these problems? One trick that can be + very valuable in this situation is to simply start by commenting out the line number + that is flagged as having the error. If you comment out line four, the error message + now changes to point to line 5. Now you ask yourself, am I really that bad that I + have two lines in a row that have errors on them? Maybe, so taken to the extreme, you + could comment out all of the remaining lines in the program. Now the error message + changes to TokenError: EOF in multi-line statement This is a very technical way + of saying that Python got to the end of file (EOF) while it was still looking for + something. In this case a right parenthesis.

    + + +

    Find and fix the error in the following code.

    +
    + + +current_time_str = input("What is the "current time" (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait") + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + + + + current_time_str = input("What is the "current time" (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait") + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + The error message points you to line 1 and in this case that is exactly where + the error occurs. In this case your biggest clue is to notice the difference + in highlighting on the line. Notice that the words current time are a + different color than those around them. Why is this? Because current time + is in double quotes inside another pair of double quotes Python thinks that + you are finishing off one string, then you have some other names and finally + another string. But you haven't separated these names or strings by commas, + and you haven't added them together with the concatenation operator (+). So, + there are several corrections you could make. First you could make the + argument to input be as follows: "What is the 'current time' (in hours 0-23) +" Notice that here we have correctly used single quotes inside double quotes + . Another option is to simply remove the extra double quotes. Why were you + quoting current time anyway? "What is the current time (in hours 0-23)" + + +current_time_str = input("What is the "current time" (in hours 0-23)?") +wait_time_str = input("How many hours do you want to wait") + +current_time_int = int(current_time_str) +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + +

    The error message points you to line 1 and in this case that is exactly where + the error occurs. In this case your biggest clue is to notice the difference + in highlighting on the line. Notice that the words current time are a + different color than those around them. Why is this? Because current time + is in double quotes inside another pair of double quotes Python thinks that + you are finishing off one string, then you have some other names and finally + another string. But you haven't separated these names or strings by commas, + and you haven't added them together with the concatenation operator (+). So, + there are several corrections you could make. First you could make the + argument to input be as follows: "What is the 'current time' (in hours 0-23) +" Notice that here we have correctly used single quotes inside double quotes + . Another option is to simply remove the extra double quotes. Why were you + quoting current time anyway? "What is the current time (in hours 0-23)"

    +
    +
    +

    Finding Clues If you follow the same advice as for the last problem, comment out + line one, you will immediately get a different error message. Here's where you need + to be very careful and not panic. The error message you get now is: NameError: name +'current_time_str' is not defined on line 4. You might be very tempted to think + that this is somehow related to the earlier problem and immediately conclude that + there is something wrong with the variable name current_time_str but if you + reflect for a minute you will see that by commenting out line one you have caused a + new and unrelated error. That is you have commented out the creation of the name + current_time_str. So of course when you want to convert it to an int you will + get the NameError. Yes, this can be confusing, but it will become much easier with + experience. It's also important to keep calm, and evaluate each new clue carefully so + you don't waste time chasing problems that are not really there.

    +

    Uncomment line 1 and you are back to the SyntaxError. Another track is to eliminate a + possible source of error. Rather than commenting out the entire line you might just + try to assign current_time_str to a constant value. For example you might make + line one look like this: current_time_str = "10" #input("What is the "current +time" (in hours 0-23)?"). Now you have assigned current_time_str to the string + 10, and commented out the input statement. And now the program works! So you + conclude that the problem must have something to do with the input function.

    +
    + + TypeError +

    TypeErrors occur when you try to combine two objects that are not compatible. For + example you try to add together an integer and a string. Usually type errors can be + isolated to lines that are using mathematical operators, and usually the line number + given by the error message is an accurate indication of the line.

    +

    Here's an example of a type error created by a Polish learner. See if you can find + and fix the error.

    + + +a = input('wpisz godzine') +x = input('wpisz liczbe godzin') +int(x) +int(a) +h = x // 24 +s = x % 24 +print (h, s) +a = a + s +print ('godzina teraz', a) + + + + + Solution +

    In finding this error there are few lessons to think about. First, you may + find it very disconcerting that you cannot understand the whole program. + Unless you speak Polish then this won't be an issue. But, learning what you + can ignore, and what you need to focus on is a very important part of the + debugging process. Second, types and good variable names are important and + can be very helpful. In this case a and x are not particularly helpful names, + and in particular they do not help you think about the types of your + variables, which as the error message implies is the root of the problem here. + The rest of the lessons we will get back to in a minute.

    +

    The error message provided to you gives you a pretty big hint. + TypeError: unsupported operand type(s) for FloorDiv: 'str' and 'number' on line: 5 + On line five we are trying to use integer division on x and 24. The error + message tells you that you are tyring to divide a string by a number. In this + case you know that 24 is a number so x must be a string. But how? You can + see the function call on line 3 where you are converting x to an integer. + int(x) or so you think. This is lesson three and is one of the most + common errors we see in introductory programming. What is the difference + between int(x) and x = int(x)

    +

    +

      +
    • +

      The expression int(x) converts the string referenced by x to an integer but it does not store it anywhere. It is very common to assume that int(x) somehow changes x itself, as that is what you are intending! The thing that makes this very tricky is that int(x) is a valid expression, so it doesn't cause any kind of error, but rather the error happens later on in the program.

      +
    • +
    • +

      The assignment statement x = int(x) is very different. Again, the int(x) expression converts the string referenced by x to an integer, but this time it also changes what x references so that x now refers to the integer value returned by the int function.

      +
    • +
    +

    +

    So, the solution to this problem is to change lines 3 and 4 so they are + assignment statements.

    +
    +
    +

    Finding Clues One thing that can help you in this situation is to print out the + values and the types of the variables involved in the statement that is causing the + error. You might try adding a print statement after line 4 print(x, type(x)) You + will see that at least we have confirmed that x is of type string. Now you need to + start to work backward through the program. You need to ask yourself, where is x used + in the program? x is used on lines 2, 3, and of course 5 and 6 (where we are getting + an error). So maybe you move the print statement to be after line 2 and again after 3. + Line 3 is where you expect the value of x to be changed to an integer. Could line 4 + be mysteriously changing x back to a string? Not very likely. So the value and type + of x is just what you would expect it to be after line 2, but not after line 3. This + helps you isolate the problem to line 3. In fact if you employ one of our earlier + techniques of commenting out line 3 you will see that this has no impact on the error, + and is a big clue that line 3 as it is currently written is useless.

    +
    + + NameError +

    Name errors almost always mean that you have used a variable before it has a value. + Often NameErrors are simply caused by typos in your code. They can be hard to spot if + you don't have a good eye for catching spelling mistakes. Other times you may simply + mis-remember the name of a variable or even a function you want to call. You have + seen one example of a NameError at the beginning of this section. Here is another one. + See if you can get this program to run successfully:

    + + +str_time = input("What time is it now?") +str_wait_time = input("What is the number of hours to wait?") +time = int(str_time) +wai_time = int(str_wait_time) + +time_when_alarm_go_off = time + wait_time +print(time_when_alarm_go_off) + + + + + Solution +

    In this example, the student seems to be a fairly bad speller, as there are a + number of typos to fix. The first one is identified as wait_time is not + defined on line 6. Now in this example you can see that there is + str_wait_time on line 2, and wai_time on line 4 and wait_time on + line 6. If you do not have very sharp eyes its easy to miss that there is a + typo on line 4.

    +
    +
    +

    Finding Clues With name errors one of the best things you can do is use the + editor, or browser search function. Quite often if you search for the exact word in the + error message one of two things will happen:

    +

    1. The word you are searching for will appear only once in your code, it's also likely + that it will be on the right hand side of an assignment statement, or as a parameter to + a function. That should confirm for you that you have a typo somewhere. If the name in + question is what you thought it should be then you probably have a typo on the left + hand side of an assignment statement on a line before your error message occurs. Start + looking backward at your assignment statements. In some cases it's really nice to + leave all the highlighted strings from the search function visible as they will help + you very quickly find a line where you might have expected your variable to be + highlighted.

    +

    2. The second thing that may happen is that you will be looking directly at a line + where you expected the search to find the string in question, but it will not be + highlighted. Most often that will be the typo right there.

    +

    Here is another one for you to try:

    + + +n = input("What time is it now (in hours)?") +n = imt(n) +m = input("How many hours do you want to wait?") +m = int(m) +sum_time = n + m +time_of_day = sum_time % 12 +print("The time is now", time_of_day) + + + + + Solution +

    This one is once again a typo, but the typo is not in a variable name, but + rather, the name of a function. The search strategy would help you with this + one easily, but there is another clue for you as well. The editor in the + textbook, as well as almost all Python editors in the world provide you with + color clues. Notice that on line 2 the function imt is not highlighted + blue like the word int on line 4.

    +
    +
    +

    And one last bit of code to fix.

    + + +present_time = input("Enter the present timein hours:") +set_alarm = input("Set the hours for alarm:") +int (present_time, set_time, alarm_time) +alarm_time = present_time + set_alarm +print(alarm_time) + + + + + Solution +

    In this example the error message is about set_time not defined on line 3. + In this case the undefined name is not used in an assignment statement, but is + used as a parameter (incorrectly) to a function call. A search on set_time + reveals that in fact it is only used once in the program. Did the author mean + set_alarm? If we make that assumption we immediately get another error + NameError: name 'alarm_time' is not defined on line: 3. The variable + alarm_time is defined on line 4, but that does not help us on line 3. + Furthermore we now have to ask the question is this function call + int(present_time, set_alarm, alarm_time) even the correct use of the + int function? The answer to that is a resounding no. Let's list all of the + things wrong with line 3:

    +

    +

      +
    1. +

      set_time is not defined and never used, the author probably meant set_alarm.

      +
    2. +
    3. +

      alarm_time cannot be used as a parameter before it is defined, even on the next line!

      +
    4. +
    5. +

      int can only convert one string to an integer at a time.

      +
    6. +
    7. +

      Finally, int should be used in an assignment statement. Even if int was called with the correct number of parameters it would have no real effect.

      +
    8. +
    +

    +
    +
    + + + + + + + + + +
    + + ValueError +

    Value errors occur when you pass a parameter to a function and the function is + expecting a certain limitations on the values, and the value passed is not compatible. + We can illustrate that with this particular program in two different ways.

    + + +current_time_str = input("What is the current time (in hours 0-23)?") +current_time_int = int(current_time_str) + +wait_time_str = input("How many hours do you want to wait") +wait_time_int = int(wait_time_str) + +final_time_int = current_time_int + wait_time_int +print(final_time_int) + + +

    Run the program but instead of typing in anything to the dialog box just click OK. You + should see the following error message: ValueError: invalid literal for int() with +base 10: '' on line: 4 This error is not because you have made a mistake in your + program. Although sometimes we do want to check the user input to make sure its valid, + but we don't have all the tools we need for that yet. The error happens because the + user did not give us something we can convert to an integer, instead we gave it an + empty string. Try running the program again. Now this time enter ten instead of + the number 10. You will get a similar error message.

    +

    ValueErrors are not always caused by user input error, but in this program that is the + case. We'll look again at ValueErrors again when we get to more complicated programs. + For now it is worth repeating that you need to keep track of the restrictions needed + for your variables, and understand what your function is expecting. You can do this by + writing comments in your code, or by naming your variables in a way that reminds you of + their proper form.

    +
    +
    diff --git a/pretext/Debugging/RuntimeErrors.ptx b/pretext/Debugging/RuntimeErrors.ptx new file mode 100644 index 00000000..09f7bf93 --- /dev/null +++ b/pretext/Debugging/RuntimeErrors.ptx @@ -0,0 +1,126 @@ + +
    + Runtime Errors +

    The second type of error is a runtime error. A program with a runtime error + is one that passed the interpreter's syntax checks, and started to execute. + However, during the execution of one of the statements in the program, an error + occurred that caused the interpreter to stop executing the program and display + an error message. Runtime errors are also called exceptions because they usually + indicate that something exceptional (and bad) has happened.

    +

    Here are some examples of common runtime errors you are sure to encounter:

    +

    +

    +

    +

    The following program contains various runtime errors. Can you spot any of them? + After locating the error, run the program to see the error message.

    + + +subtotal = input("Enter total before tax:") +tax = .08 * subTotal +print("tax on", subtotal, "is:", tax) + + +

    Notice the following important differences between syntax errors and runtime errors that can help you as you try to diagnose + and repair the problem:

    +

    +

    +

    +

    Stay tuned for more details on the various types of runtime errors. We have a whole section of this + chapter dedicated to that topic.

    +

    + Check your understanding +

    + + +

    Which of the following is a run-time error?

    +
    + + + +

    Attempting to divide by 0.

    +
    + +

    Python cannot reliably tell if you are trying to divide by 0 until it is executing your program (e.g., you might be asking the user for a value and then dividing by that value—you cannot know what value the user will enter before you run the program).

    +
    +
    + + +

    Forgetting a right-parenthesis ) when invoking a function.

    +
    + +

    This is a problem with the formal structure of the program. Python knows where colons are required and can detect when one is missing simply by looking at the code without running it.

    +
    +
    + + +

    Forgetting to divide by 100 when printing a percentage amount.

    +
    + +

    This will produce the wrong answer, but Python will not consider it an error at all. The programmer is the one who understands that the answer produced is wrong.

    +
    +
    +
    +
    + + +

    Who or what typically finds runtime errors?

    +
    + + + +

    The programmer.

    +
    + +

    Programmers rarely find all the runtime errors, there is a computer program that will do it for us.

    +
    +
    + + +

    The interpreter.

    +
    + +

    If an instruction is illegal to perform at that point in the execution, the interpreter will stop with a message describing the exception.

    +
    +
    + + +

    The computer.

    +
    + +

    Well, sort of. But it is a special thing in the computer that does it. The stand alone computer without this additional piece can not do it.

    +
    +
    + + +

    The teacher / instructor.

    +
    + +

    Your teacher and instructor may be able to find most of your runtime errors, but only because they have experience looking at code and possibly writing code. With experience runtime errors are easier to find. But we also have an automated way of finding these types of errors.

    +
    +
    +
    +
    +
    diff --git a/pretext/Debugging/SemanticErrors.ptx b/pretext/Debugging/SemanticErrors.ptx new file mode 100644 index 00000000..5864bbad --- /dev/null +++ b/pretext/Debugging/SemanticErrors.ptx @@ -0,0 +1,140 @@ + +
    + Semantic Errors +

    The third type of error is the semantic error, also called a logic error. If there is a semantic error + in your program, it will run successfully in the sense that the computer will + not generate any error messages. However, your program will not do the right thing. It will do + something else. Specifically, it will do what you told it to do, not what you wanted it to do.

    +

    The following program has a semantic error. Execute it to see what goes wrong:

    + + +num1 = input('Enter a number:') +num2 = input('Enter another number:') +sum = num1 + num2 + +print('The sum of', num1, 'and', num2, 'is', sum) + + +

    This program runs and produces a result. However, the result is not what the programmer intended. It contains + a semantic error. The error is that the program performs concatenation instead of addition, because the programmer + failed to write the code necessary to convert the inputs to integers.

    +

    With semantic errors, the problem is that the program you wrote is not the program you wanted to + write. The meaning of the program (its semantics) is wrong. The computer is + faithfully carrying out the instructions you wrote, and its results + are correct, given the instructions that you provided. However, because your instructions + have a flaw in their design, the program does not behave as desired.

    +

    Identifying semantic errors can be tricky because no error message appears to make it obvious that the results are + incorrect. The only way you can detect semantic errors is if you know in advance what the program should do for a given set + of input. Then, you run the program with that input data and compare the output of the program with what you expect. If + there is a discrepancy between the actual output and the expected output, you can conclude that there is either 1) a + semantic error or 2) an error in your expected results.

    +

    Once you've determined that you have a semantic error, locating it can be tricky because you must work + backward by looking at the output of the program and trying to figure out what it is doing.

    + + Test Cases +

    To detect a semantic error in your program, you need the help of something called a test case.

    + + Test Case +

    A test case is a set of input values for the program, together with the output that you expect the program should produce when it is run with those particular + inputs.

    +
    +

    Here is an example of a test case for the program above:

    +
    Test Case
    +---------
    +Input: 2, 3
    +Expected Output: 5
    +

    If you give this test case to someone and ask them to test the program, they can type in the inputs, observe the output, + check it against the expected output, and determine whether a semantic error exists based on whether the actual output + matches the expected output or not. The tester doesn't even have to know what the program is supposed to do. For this reason, + software companies often have separate quality assurance departments whose responsibility is to check that the programs written + by the programmers perform as expected. The testers don't have to be programmers; they just have to be able to operate the + program and compare its results with the test cases they're given.

    +

    In this case, the program is so simple that we don't need to write down a test case at all; we can compute the expected output + in our heads with very little effort. More complicated programs require effort to create the test case (since you shouldn't use + the program to compute the expected output; you have to do it with a calculator or by hand), but the effort pays off when + the test case helps you to identify a semantic error that you didn't know existed.

    +

    Semantic errors are the most dangerous of the three types of errors, because in some cases they are not noticed by either + the programmers or the users who use the program. Syntax errors cannot go undetected (the program won't run at all if + they exist), and runtime errors are usually also obvious and typically detected by developers before a program is + released for use (although it is possible for a runtime error to occur for some inputs and not for + others, so these can sometimes remain undetected for a while). However, programs often go for years with undetected + semantic errors; no one realizes that the program has been producing incorrect results. They just assume that because the + results seem reasonable, they are correct. Sometimes, these errors are relatively harmless. But if they involve + financial transactions or medical equipment, the results can be harmful or even deadly. For this reason, creating test + cases is an important part of the work that programmers perform in order to help them produce programs that work + correctly.

    +

    + Check your understanding +

    + + +

    Which of the following is a semantic error?

    +
    + + + +

    Attempting to divide by 0.

    +
    + +

    A semantic error is an error in logic. In this case the program does not produce the correct output because the problem is not solved correctly. This would be considered a run-time error.

    +
    +
    + + +

    Forgetting a right-parenthesis ) when invoking a function.

    +
    + +

    A semantic error is an error in logic. In this case the program does not produce the correct output because the code can not be processed by the compiler or interpreter. This would be considered a syntax error.

    +
    +
    + + +

    Forgetting to divide by 100 when printing a percentage amount.

    +
    + +

    This will produce the wrong answer because the programmer implemented the solution incorrectly. This is a semantic error.

    +
    +
    +
    +
    + + +

    Who or what typically finds semantic errors?

    +
    + + + +

    The programmer.

    +
    + +

    You must fully understand the problem so that you can tell if your program properly solves it.

    +
    +
    + + +

    The compiler / interpreter.

    +
    + +

    The compiler and / or interpreter will only do what you instruct it to do. It does not understand what the problem is that you want to solve.

    +
    +
    + + +

    The computer.

    +
    + +

    The computer does not understand your problem. It just executes the instructions that it is given.

    +
    +
    + + +

    The teacher / instructor.

    +
    + +

    Your teacher and instructor may be able to find most of your semantic errors, but only because they have experience solving problems. However it is your responsibility to understand the problem so you can develop a correct solution.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Debugging/Syntaxerrors.ptx b/pretext/Debugging/Syntaxerrors.ptx new file mode 100644 index 00000000..7de60278 --- /dev/null +++ b/pretext/Debugging/Syntaxerrors.ptx @@ -0,0 +1,126 @@ + +
    + Syntax errors +

    Python can only execute a program if the program is syntactically correct; + otherwise, the process fails and returns an error message. Syntax refers + to the structure of a program and the rules about that structure. For example, + in English, a sentence must begin with a capital letter and end with a period. + this sentence contains a syntax error. So does this one

    +

    In Python, rules of syntax include requirements like these: strings must be enclosed in quotes; statements must + generally be written one per line; the print statement must enclose the value to be displayed in parenthesis; + expressions must be correctly formed. The following lines contain syntax errors:

    +
    print(Hello, world!)
    +print "Hello, world!"
    +print(5 + )
    +

    For most readers of English, a few syntax errors are not a significant problem, which is why we can read the poetry of + e. e. cummings without problems. Python is not so forgiving. When you run a Python program, the interpreter checks it + for syntax errors before beginning to execute the first statement. If there is a single syntax error anywhere in your + program, Python will display an error message and quit without executing any of the program.

    +

    To see a syntax error in action, look at the following program. Can you spot the error? + After locating the error, run the program to see the error message.

    + + +print("Hello, World!") +print(5 + ) +print("All finished!") + + +

    Notice the following:

    +

    +

      +
    1. +

      The error message clearly indicates that the problem is a SyntaxError. This lets you know the problem + is not one of the other two types of errors we'll discuss shortly.

      +
    2. +
    3. +

      The error is on line 2 of the program. However, even though there is nothing + wrong with line 1, the print statement does not execute — none of the program successfully executes + because of the presence of just one syntax error.

      +
    4. +
    5. +

      The error gives the line number where Python believes the error exists. In this case, the error message pinpoints the + location correctly. But in other cases, the line number can be inaccurate or entirely missing.

      +

      To see an example of the latter, try removing just the right parenthesis ) from line 2 and + running the program again. Notice how the error message gives no line number at all. With syntax errors, you need to be + prepared to hunt around a bit in order to locate the trouble.

      +
    6. +
    +

    +

    One aspect of syntax you have to watch out for in Python involves indentation. Python requires you to begin all + statements at the beginning of the line, unless you are using a flow control statement like a for or an if statement + (we'll discuss these soon… stay tuned!). To see an example of this kind of problem, modify the program above by inserting a + couple of spaces at the beginning of one of the lines.

    +

    + Check your understanding +

    + + +

    Which of the following is a syntax error?

    +
    + + + +

    Attempting to divide by 0.

    +
    + +

    A syntax error is an error in the structure of the python code that can be detected before the program is executed. Python cannot usually tell if you are trying to divide by 0 until it is executing your program (e.g., you might be asking the user for a value and then dividing by that value—you cannot know what value the user will enter before you run the program).

    +
    +
    + + +

    Forgetting a right-parenthesis ) when invoking a function.

    +
    + +

    This is a problem with the formal structure of the program. Python knows where parentheses are required and can detect when one is missing simply by analyzing the code without running it.

    +
    +
    + + +

    Forgetting to divide by 100 when printing a percentage amount.

    +
    + +

    This will produce the wrong answer, but Python will not consider it an error at all. The programmer is the one who understands that the answer produced is wrong.

    +
    +
    +
    +
    + + +

    Who or what typically finds syntax errors?

    +
    + + + +

    The programmer.

    +
    + +

    Programmers rarely find all the syntax errors, there is a computer program that will do it for us.

    +
    +
    + + +

    The compiler / interpreter.

    +
    + +

    The compiler and / or interpreter is a computer program that determines if your program is written in a way that can be translated into machine language for execution.

    +
    +
    + + +

    The computer.

    +
    + +

    Well, sort of. But it is a special thing in the computer that does it. The stand alone computer without this additional piece can not do it.

    +
    +
    + + +

    The teacher / instructor.

    +
    + +

    Your teacher and instructor may be able to find most of your syntax errors, but only because they have experience looking at code and possibly writing code. With experience syntax errors are easier to find. But we also have an automated way of finding these types of errors.

    +
    +
    +
    +
    +
    diff --git a/pretext/Debugging/intro-DebuggingGeneral.ptx b/pretext/Debugging/intro-DebuggingGeneral.ptx new file mode 100644 index 00000000..41c47ca4 --- /dev/null +++ b/pretext/Debugging/intro-DebuggingGeneral.ptx @@ -0,0 +1,38 @@ + +
    + Introduction to Debugging +

    The art of debugging is figuring out what you really told your program to do rather than what you thought you told it to do.  — Andrew Singer

    +

    This chapter will spend some time talking about what happens when errors occur as well as how to fix + the errors that you will inevitably come across.

    +

    Before computers became digital, debugging could mean looking for insects impeding the functioning of physical relays as in this somewhat apocryphal tale about Admiral Grace Hopper, a pioneer of computer programming.

    +

    Nowadays, debugging doesn't involve bug guts all over your computer but it can still be just as frustrating. To cope with this frustration, this chapter will present some strategies to help you understand why the program you wrote does not behave as intended.

    +

    Many people think debugging is some kind of punishment for not being smart enough to write code correctly the first time. But nobody does that, failure in programming is part of the deal. Here's a fun video to keep in mind as you learn to program.

    +
    diff --git a/pretext/Debugging/intro-HowtobeaSuccessfulProgrammer.ptx b/pretext/Debugging/intro-HowtobeaSuccessfulProgrammer.ptx new file mode 100644 index 00000000..bf046903 --- /dev/null +++ b/pretext/Debugging/intro-HowtobeaSuccessfulProgrammer.ptx @@ -0,0 +1,6 @@ + +
    + 👩‍💻 Programming in the Real World +

    Before we dive into the nitty gritty details of debugging, here is a video to give you a flavor for what its like to be a programmer in the real world.

    +
    diff --git a/pretext/Debugging/toctree.ptx b/pretext/Debugging/toctree.ptx new file mode 100644 index 00000000..6d1f1144 --- /dev/null +++ b/pretext/Debugging/toctree.ptx @@ -0,0 +1,12 @@ + + + Debugging + + + + + + + + + diff --git a/pretext/Dictionaries/AccumulatingResultsFromaDictionary.ptx b/pretext/Dictionaries/AccumulatingResultsFromaDictionary.ptx new file mode 100644 index 00000000..3f340052 --- /dev/null +++ b/pretext/Dictionaries/AccumulatingResultsFromaDictionary.ptx @@ -0,0 +1,86 @@ + +
    + Accumulating Results From a Dictionary +

    Just as we have iterated through the elements of a list to accumulate a result, + we can also iterate through the keys in a dictionary, accumulating a result that may + depend on the values associated with each of the keys.

    +

    For example, suppose that we wanted to compute a Scrabble score for the Study in Scarlet + text. Each occurrence of the letter ‘e' earns one point, but ‘q' earns 10. We have + a second dictionary, stored in the variable letter_values. Now, to compute the + total score, we start an accumulator at 0 and go through each of the letters in the + counts dictionary. For each of those letters that has a letter value (no points for spaces, + punctuation, capital letters, etc.), we add to the total score.

    + + +f = open('scarlet2.txt', 'r') +txt = f.read() +# now txt is one long string containing all the characters +letter_counts = {} # start with an empty dictionary +for c in txt: + if c not in letter_counts: + # we have not seen this character before, so initialize a counter for it + letter_counts[c] = 0 + + #whether we've seen it before or not, increment its counter + letter_counts[c] = letter_counts[c] + 1 + +letter_values = {'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f':4, 'g': 2, 'h':4, 'i':1, 'j':8, 'k':5, 'l':1, 'm':3, 'n':1, 'o':1, 'p':3, 'q':10, 'r':1, 's':1, 't':1, 'u':1, 'v':4, 'w':4, 'x':8, 'y':4, 'z':10} + +tot = 0 +for letter in letter_counts: + if letter in letter_values: + tot = tot + letter_values[letter] * letter_counts[letter] + +print(tot) + + +

    Line 18 is the tricky one. We are updating the variable tot to have its old number plus the score for the current letter times the number of occurrences of that letter. + Try changing some of the letter values and see how it affects the total. Try changing txt to be just a single word that you might play in Scrabble.

    +

    + Check your Understanding +

    + + +

    1. The dictionary travel contains the number of countries within each continent that Jackie has traveled to. Find the total number of countries that Jackie has been to, and save this number to the variable name total. Do not hard code this!

    +
    + + +travel = {"North America": 2, "Europe": 8, "South America": 3, "Asia": 4, "Africa":1, "Antarctica": 0, "Australia": 1} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(total, 19, "Testing that total is correct.") + +myTests().main() + + +
    + + +

    2.schedule is a dictionary where a class name is a key and its value is how many credits it was worth. Go through and accumulate the total number of credits that have been earned so far and assign that to the variable total_credits. Do not hardcode.

    +
    + + +schedule = {"UARTS 150": 3, "SPANISH 103": 4, "ENGLISH 125": 4, "SI 110": 4, "ENS 356": 2, "WOMENSTD 240": 4, "SI 106": 4, "BIO 118": 3, "SPANISH 231": 4, "PSYCH 111": 4, "LING 111": 3, "SPANISH 232": 4, "STATS 250": 4, "SI 206": 4, "COGSCI 200": 4, "AMCULT 202": 4, "ANTHRO 101": 4} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(total_credits, 63, "Testing that total_credits has the correct value.") + +myTests().main() + + +
    + + +
    diff --git a/pretext/Dictionaries/AccumulatingtheBestKey.ptx b/pretext/Dictionaries/AccumulatingtheBestKey.ptx new file mode 100644 index 00000000..d438ec93 --- /dev/null +++ b/pretext/Dictionaries/AccumulatingtheBestKey.ptx @@ -0,0 +1,100 @@ + +
    + Accumulating the Best Key +

    Now what if we want to find the key associated with the maximum value? It would be nice to just find + the maximum value as above, and then look up the key associated with it, but dictionaries don't work + that way. You can look up the value associated with a key, but not the key associated with a value. (The + reason for that is there may be more than one key that has the same value).

    +

    The trick is to have the accumulator keep track of the best key so far instead of the best value so far. + For simplicity, let's assume that there are at least two keys in the dictionary. Then, similar to our + first version of computing the max of a list, we can initialize the best-key-so-far to be the first key, + and loop through the keys, replacing the best-so-far whenever we find a better one.

    +

    In the exercise below, we have provided skeleton code. See if you can fill it in. An answer is provided, + but you'll learn more if you try to write it yourself first.

    + + +

    Write a program that finds the key in a dictionary that has the maximum value. If + two keys have the same maximum value, it's OK to print out either one. Fill + in the skeleton code

    +
    + + +d = {'a': 194, 'b': 54, 'c':34, 'd': 44, 'e': 312, 'full':31} + +ks = d.keys() +# initialize variable best_key_so_far to be the first key in d +for k in ks: + # check if the value associated with the current key is + # bigger than the value associated with the best_key_so_far + # if so, save the current key as the best so far + +print("key " + best_key_so_far + " has the highest value, " + str(d[best_key_so_far])) + + + + + +d = {'a': 194, 'b': 54, 'c':34, 'd': 44, 'e': 312, 'full':31} + +ks = d.keys() +best_key_so_far = list(ks)[0] # Have to turn ks into a real list before using [] to select an item +for k in ks: + if d[k] > d[best_key_so_far]: + best_key_so_far = k + +print("key " + best_key_so_far + " has the highest value, " + str(d[best_key_so_far])) + + + +
    +

    + Check your Understanding +

    + + +

    1. Create a dictionary called d that keeps track of all the characters in the string placement and notes how many times each character was seen. Then, find the key with the lowest value in this dictionary and assign that key to key_with_min_value.

    +
    + + +placement = "Beaches are cool places to visit in spring however the Mackinaw Bridge is near. Most people visit Mackinaw later since the island is a cool place to explore." + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(d.keys()), sorted(['B', 'e', 'a', 'c', 'h', 's', ' ', 'r', 'o', 'l', 'p', 't', 'v', 'i', 'n', 'g', 'w', 'M', 'k', 'd', '.', 'x']), "Testing the keys were created correctly") + self.assertEqual(sorted(d.values()), sorted([2, 17, 12, 8, 4, 10, 27, 7, 10, 8, 6, 8, 3, 13, 7, 2, 3, 3, 2, 2, 2, 1]), "Testing the values were created correctly") + def testTwo(self): + self.assertEqual(key_with_min_value, "x", "Testing that key_with_min_value has been correctly assigned") + +myTests().main() + + +
    + + +

    5. Create a dictionary called lett_d that keeps track of all of the characters in the string product and notes how many times each character was seen. Then, find the key with the highest value in this dictionary and assign that key to key_with_max_value.

    +
    + + +product = "iphone and android phones" + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(lett_d.items()), sorted([('h', 2), ('a', 2), (' ', 3), ('n', 4), ('d', 3), ('o', 3), ('i', 2), ('p', 2), ('e', 2), ('r', 1), ('s', 1)]), "Testing that lett_d has been created correctly.") + def testTwo(self): + self.assertEqual(key_with_max_value, "n", "Testing that key_with_max_value has been correctly assigned") + +myTests().main() + + +
    +
    diff --git a/pretext/Dictionaries/Aliasingandcopying.ptx b/pretext/Dictionaries/Aliasingandcopying.ptx new file mode 100644 index 00000000..ac80c700 --- /dev/null +++ b/pretext/Dictionaries/Aliasingandcopying.ptx @@ -0,0 +1,77 @@ + +
    + Aliasing and copying +

    Because dictionaries are mutable, you need to be aware of aliasing (as we saw with lists). Whenever + two variables refer to the same dictionary object, changes to one affect the other. For example, opposites is a + dictionary that contains pairs of opposites.

    + + +opposites = {'up': 'down', 'right': 'wrong', 'true': 'false'} +alias = opposites + +print(alias is opposites) + +alias['right'] = 'left' +print(opposites['right']) + + +

    As you can see from the is operator, alias and opposites refer to the same object.

    +

    If you want to modify a dictionary and keep a copy of the original, use the dictionary + copy method. Since acopy is a copy of the dictionary, changes to it will not effect the original.

    + + +acopy = opposites.copy() +acopy['right'] = 'left' # does not change opposites + + +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +mydict = {"cat":12, "dog":6, "elephant":23, "bear":20} +yourdict = mydict +yourdict["elephant"] = 999 +print(mydict["elephant"]) + + +
    + + + +

    23

    +
    + +

    mydict and yourdict are both names for the same dictionary.

    +
    +
    + + +

    None

    +
    + +

    The dictionary is mutable so changes can be made to the keys and values.

    +
    +
    + + +

    999

    +
    + +

    Yes, since yourdict is an alias for mydict, the value for the key elephant has been changed.

    +
    +
    + + +

    Error, there are two different keys named elephant.

    +
    + +

    There is only one dictionary with only one key named elephant. The dictionary has two different names, mydict and yourdict.

    +
    +
    +
    +
    +
    diff --git a/pretext/Dictionaries/ChapterAssessment.ptx b/pretext/Dictionaries/ChapterAssessment.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Dictionaries/ChapterAssessment.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Dictionaries/Dictionarymethods.ptx b/pretext/Dictionaries/Dictionarymethods.ptx new file mode 100644 index 00000000..fa245c98 --- /dev/null +++ b/pretext/Dictionaries/Dictionarymethods.ptx @@ -0,0 +1,379 @@ + +
    + Dictionary methods +

    Dictionaries have a number of useful built-in methods. + The following table provides a summary and more details can be found in the + Python Documentation.

    + + + + + Method + + + Parameters + + + Description + + + + + keys + + + none + + + Returns a view of the keys in the dictionary + + + + + values + + + none + + + Returns a view of the values in the dictionary + + + + + items + + + none + + + Returns a view of the key-value pairs in the dictionary + + + + + get + + + key + + + Returns the value associated with key; None otherwise + + + + + get + + + key,alt + + + Returns the value associated with key; alt otherwise + + + +
    +

    As we saw earlier with strings and lists, dictionary methods use dot notation, which specifies the name of the method + to the right of the dot and the name of the object on which to apply the method immediately to the left of the dot. + For example, if x is a variable + whose value is a dictionary, x.keys is the method object, and x.keys() invokes the method, returning a view of + the value.

    + + Iterating over Dictionaries +

    There are three ways to iterate over the contents of a dictionary. Let's take a moment to examine them.

    +

    The first technique involves iterating over the keys of the dictionary using the keys method. + The keys method returns a collection of the keys in the dictionary.

    + + +inventory = {'apples': 430, 'bananas': 312, 'pears': 217, 'oranges': 525} + +for akey in inventory.keys(): # the order in which we get the keys is not defined + print("Got key", akey, "which maps to value", inventory[akey]) + +ks = list(inventory.keys()) # Make a list of all of the keys +print(ks) +print(ks[0]) # Display the first key + + +

    Note the first line of the for loop:

    +
    for akey in inventory.keys():
    +

    Each time through the loop, the loop variable akey is assigned a different key in the dictionary. In the loop body, + the value associated with the key is accessed by indexing the dictionary with akey using the expression + inventory[akey]. Note that the order in which the keys are assigned in the loop is not predictable. If you want to + visit the keys in alphabetic order, you must use the sorted function to produce a sorted collection of keys, like this:

    +
    for akey in sorted(inventory.keys()):
    +

    It's so common to iterate over the keys in a dictionary that you can + omit the keys method call in the for loop — iterating over + a dictionary implicitly iterates over its keys.

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} + +for k in inventory: + print("Got key", k) + + +

    The values method returns a collection of the values in the dictionary. Here's an example + that displays a list of the values:

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} + +print(list(inventory.values())) + +for v in inventory.values(): + print("Got", v) + + +

    The items method returns a collection of tuples containing each key and its associated value. + Take a look at this example that iterates over the dictionary using the items method:

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} + +print(list(inventory.items())) + +for k, v in inventory.items(): + print("Got", k, "that maps to", v) + + +

    Take a close look at the first line of the for loop:

    +
    for k, v in inventory.items():
    +

    Each time through the loop, k receives a key from the dictionary, and v receives its associated + value. That avoids the need to index the dictionary inside the loop body to access the value associated + with the key.

    + +

    You may have noticed in the examples above that, to print the result of the keys(), values(), and + items() methods, we used lines like this:

    +
    print(list(inventory.keys())
    +

    instead of this:

    +
    print(inventory.keys())
    +

    Technically, keys(), values(), and items() don't return actual lists. Like the range function described + previously, they return objects that produce the items one at a time, rather than producing and + storing all of them in advance as a list. If you need to perform an operation on the result of one of these methods such as + extracting the first item, you must convert the result to a list using the list conversion function. For example, if you want to get the first key, + this won't work: inventory.keys()[0]. You need to make the collection of keys into a real list before using + [0] to index into it: list(inventory.keys())[0].

    +
    +
    + + Safely Retrieving Values +

    Looking up a value in a dictionary is a potentially dangerous operation. When using the [] operator to access + a key, if the key is not present, a runtime error occurs. There are two ways to deal with this problem.

    +

    The first approach is to use the in and not in operators, which can test if a key is in the dictionary:

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} +print('apples' in inventory) +print('cherries' in inventory) + +if 'bananas' in inventory: + print(inventory['bananas']) +else: + print("We have no bananas") + + +

    The second approach is to use the get method. get retrieves the value associated with a key, similar to the [] operator. The important + difference is that get will not cause a runtime error if the key is not present. It will instead return the value None. + There exists a variation of get that allows a second parameter that serves as an alternative return value in the + case where the key is not present. This can be seen in the final example below. In this case, since cherries is not + a key, get returns 0 (instead of None).

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} + +print(inventory.get("apples")) +print(inventory.get("cherries")) + +print(inventory.get("cherries",0)) + + +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +mydict = {"cat":12, "dog":6, "elephant":23, "bear":20} +answer = mydict.get("cat")//mydict.get("dog") +print(answer) + + +
    + + + +

    2

    +
    + +

    get returns the value associated with a given key so this divides 12 by 6.

    +
    +
    + + +

    0.5

    +
    + +

    12 is divided by 6, not the other way around.

    +
    +
    + + +

    bear

    +
    + +

    Take another look at the example for get above. get returns the value associated with a given key.

    +
    +
    + + +

    Error, divide is not a valid operation on dictionaries.

    +
    + +

    The integer division operator is being used on the values returned from the get method, not on the dictionary.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +mydict = {"cat":12, "dog":6, "elephant":23, "bear":20} +print("dog" in mydict) + + +
    + + + +

    True

    +
    + +

    Yes, dog is a key in the dictionary.

    +
    +
    + + +

    False

    +
    + +

    The in operator returns True if a key is in the dictionary, False otherwise.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +mydict = {"cat":12, "dog":6, "elephant":23, "bear":20} +print(23 in mydict) + + +
    + + + +

    True

    +
    + +

    23 is a value in the dictionary, not a key.

    +
    +
    + + +

    False

    +
    + +

    Yes, the in operator returns True if a key is in the dictionary, False otherwise.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +total = 0 +mydict = {"cat":12, "dog":6, "elephant":23, "bear":20} +for akey in mydict: + if len(akey) > 3: + total = total + mydict[akey] +print(total) + + +
    + + + +

    18

    +
    + +

    Add the values that have keys longer than 3 characters, not those with exactly 3 characters.

    +
    +
    + + +

    43

    +
    + +

    Yes, the for statement iterates over the keys. It adds the values of the keys that have length greater than 3.

    +
    +
    + + +

    0

    +
    + +

    This is the accumulator pattern. Total starts at 0 but then changes as the iteration proceeds.

    +
    +
    + + +

    61

    +
    + +

    Not all the values are added together. The if statement only chooses some of them.

    +
    +
    +
    +
    + + +

    5. We have a dictionary of the specific events that Italy has won medals in and the number of medals they have won for each event. Assign to the variable events a list of the keys from the dictionary medal_events. Use a dictionary method and cast to a list; do not hard code or accumulate a list via iteration.

    +
    + + +medal_events = {'Shooting': 7, 'Fencing': 4, 'Judo': 2, 'Swimming': 3, 'Diving': 2} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(type(events), list, "Testing that events is a list") + self.assertEqual(sorted(events), sorted(medal_events), "Testing that events was created correctly") + self.assertNotIn('[', self.getEditorText(), "Hard coding or accumulation detected; use a dictionary method instead") + +myTests().main() + + + + Add the following line: + events = list(medal_events.keys()) + +

    Add the following line:

    +
    events = list(medal_events.keys())
    +
    +
    +
    +
    diff --git a/pretext/Dictionaries/Dictionaryoperations.ptx b/pretext/Dictionaries/Dictionaryoperations.ptx new file mode 100644 index 00000000..04a19cef --- /dev/null +++ b/pretext/Dictionaries/Dictionaryoperations.ptx @@ -0,0 +1,111 @@ + +
    + Dictionary operations +

    The del statement removes a key-value pair from a dictionary. For example, the following dictionary contains the + names of various fruits and the number of each fruit in stock. If someone buys all of the pears, we can remove the + entry from the dictionary.

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} + +del inventory['pears'] + + +

    Dictionaries are mutable, as the delete operation above indicates. As we've seen before with lists, this means that the + dictionary can be modified by referencing an association on the left hand side of the assignment statement. In the + previous example, instead of deleting the entry for pears, we could have set the inventory to 0.

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} + +inventory['pears'] = 0 + + + +

    Setting the value associated with pears to 0 has a different effect than removing the key-value pair entirely + with del. Try printout out the two dictionaries in the examples above.

    +
    +

    Similarily, a new shipment of 200 bananas arriving could be handled like this. Notice that there are now 512 bananas— + the dictionary has been modified. Note also that the len function also works on dictionaries. It returns the number + of key-value pairs.

    + + +inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217} +inventory['bananas'] = inventory['bananas'] + 200 + +numItems = len(inventory) + + +

    Notice that there are now 512 bananas—the dictionary has been modified. Note also that the len function also + works on dictionaries. It returns the number of key-value pairs.

    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +mydict = {"cat":12, "dog":6, "elephant":23} +mydict["mouse"] = mydict["cat"] + mydict["dog"] +print(mydict["mouse"]) + + +
    + + + +

    12

    +
    + +

    12 is associated with the key cat.

    +
    +
    + + +

    0

    +
    + +

    The key mouse will be associated with the sum of the two values.

    +
    +
    + + +

    18

    +
    + +

    Yes, add the value for cat and the value for dog (12 + 6) and create a new entry for mouse.

    +
    +
    + + +

    Error, there is no entry with mouse as the key.

    +
    + +

    Since the new key is introduced on the left hand side of the assignment statement, a new key-value pair is added to the dictionary.

    +
    +
    +
    +
    + + +

    2. Update the value for Phelps in the dictionary swimmers to include his medals from the Rio Olympics by adding 5 to the current value (Phelps will now have 28 total medals). Do not rewrite the dictionary.

    +
    + + +swimmers = {'Manuel':4, 'Lochte':12, 'Adrian':7, 'Ledecky':5, 'Dirado':4, 'Phelps':23} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(sorted(swimmers.items()), sorted([('Adrian', 7), ('Dirado', 4), ('Ledecky', 5), ('Lochte', 12), ('Phelps', 28), ('Manuel',4)]), "Testing that swimmers is assigned to correct values.") + +myTests().main() + + +
    +
    diff --git a/pretext/Dictionaries/Exercises.ptx b/pretext/Dictionaries/Exercises.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Dictionaries/Exercises.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Dictionaries/Glossary.ptx b/pretext/Dictionaries/Glossary.ptx new file mode 100644 index 00000000..82362417 --- /dev/null +++ b/pretext/Dictionaries/Glossary.ptx @@ -0,0 +1,33 @@ + +
    + Glossary + + + dictionary +

    A collection of key-value pairs that maps from keys to values. The keys + can be any immutable type, and the values can be any type.

    +
    + + key +

    A data item that is mapped to a value in a dictionary. Keys are used + to look up values in a dictionary.

    +
    + + value +

    The value that is associated with each key in a dictionary.

    +
    + + key-value pair +

    One of the pairs of items in a dictionary. Values are looked up in a + dictionary by key.

    +
    + + mapping type +

    A mapping type is a data type comprised of a collection of keys and + associated values. Python's only built-in mapping type is the + dictionary. Dictionaries implement the + associative array + abstract data type.

    +
    +
    +
    diff --git a/pretext/Dictionaries/WPChoosingDictionaries.ptx b/pretext/Dictionaries/WPChoosingDictionaries.ptx new file mode 100644 index 00000000..a7ea48d7 --- /dev/null +++ b/pretext/Dictionaries/WPChoosingDictionaries.ptx @@ -0,0 +1,32 @@ + +
    + 👩‍💻 When to use a dictionary +

    Now that you have experience using lists and dictionaries, you will have to decide which one is best to use in each situation. The following guidelines will help you recognize when a dictionary will be beneficial:

    +

    +

    +

    + + + + + + + + + + + + + + +
    diff --git a/pretext/Dictionaries/intro-AccumulatingMultipleResultsInaDictionary.ptx b/pretext/Dictionaries/intro-AccumulatingMultipleResultsInaDictionary.ptx new file mode 100644 index 00000000..f37807a1 --- /dev/null +++ b/pretext/Dictionaries/intro-AccumulatingMultipleResultsInaDictionary.ptx @@ -0,0 +1,337 @@ + +
    + Introduction: Accumulating Multiple Results In a Dictionary +

    You have previously seen the accumulator pattern; it goes through the items in a sequence, + updating an accumulator variable each time. Rather than accumulating a single result, it's + possible to accumulate many results. Suppose, for example, we wanted to find out which + letters are used most frequently in English.

    +

    Suppose we had a reasonably long text that we thought was representative of general English + usage. For our purposes in the this chapter, we will use the text of the Sherlock Holmes story, + A Study in Scarlet, by Sir Arthur Conan Doyle. The text actually includes a few + lines about the source of the transcription (Project Gutenberg), but those will not + materially affect our analyses so we will just leave them in. You can access this text + within this chapter with the code open('scarlet.txt', 'r').

    + <div class="alert alert-info"> +<p>As with other files that we access in this textbook environment, this one is actually pre-loaded in your browser, not retrieved from your computer's file system. That's why this chapter may be a little slower to load than others. You can view the text of "A Study in Scarlet" at the bottom of the page.</p> +</div> +

    If we want to find out how often the letter ‘t' occurs, we can accumulate the result + in a count variable.

    + + +f = open('scarlet.txt', 'r') +txt = f.read() +# now txt is one long string containing all the characters +t_count = 0 #initialize the accumulator variable +for c in txt: + if c == 't': + t_count = t_count + 1 #increment the counter +print("t: " + str(t_count) + " occurrences") + + +

    We can accumulate counts for more than one character as we traverse the text. + Suppose, for example, we wanted to compare the counts of ‘t' and ‘s' in the text.

    + + +f = open('scarlet.txt', 'r') +txt = f.read() +# now txt is one long string containing all the characters +t_count = 0 #initialize the accumulator variable +s_count = 0 # initialize the s counter accumulator as well +for c in txt: + if c == 't': + t_count = t_count + 1 #increment the t counter + elif c == 's': + s_count = s_count + 1 +print("t: " + str(t_count) + " occurrences") +print("s: " + str(s_count) + " occurrences") + + +

    OK, but you can see this is going to get tedious if we try to accumulate counts + for all the letters. We will have to initialize a lot of accumulators, and there will + be a very long if..elif..elif statement. Using a dictionary, we can do a lot better.

    +

    One dictionary can hold all of the accumulator variables. Each key in the dictionary + will be one letter, and the corresponding value will be the count so far of how + many times that letter has occurred.

    + + +f = open('scarlet.txt', 'r') +txt = f.read() +# now txt is one long string containing all the characters +letter_counts = {} # start with an empty dictionary +letter_counts['t'] = 0 # initialize the t counter +letter_counts['s'] = 0 # initialize the s counter +for c in txt: + if c == 't': + letter_counts['t'] = letter_counts['t'] + 1 # increment the t counter + elif c == 's': + letter_counts['s'] = letter_counts['s'] + 1 # increment the s counter + +print("t: " + str(letter_counts['t']) + " occurrences") +print("s: " + str(letter_counts['s']) + " occurrences") + + +

    In the example above, we've created a dictionary, letter_counts, to hold the letters ‘t' + and ‘c', with their associated counts. This hasn't really improved things yet, but look closely at lines 8-11 in the code above. + Whichever character we're seeing, t or s, we're incrementing the counter for that + character. So lines 9 and 11 could really be the same, if we make one small change:

    + + +f = open('scarlet.txt', 'r') +txt = f.read() +# now txt is one long string containing all the characters +letter_counts = {} # start with an empty dictionary +letter_counts['t'] = 0 # intiialize the t counter +letter_counts['s'] = 0 # initialize the s counter +for c in txt: + if c == 't': + letter_counts[c] = letter_counts[c] + 1 # increment the t counter + elif c == 's': + letter_counts[c] = letter_counts[c] + 1 # increment the s counter + +print("t: " + str(letter_counts['t']) + " occurrences") +print("s: " + str(letter_counts['s']) + " occurrences") + + +

    Lines 9 and 11 above may seem a little confusing at first. Previously, our assignment + statements referred directly to keys, with letter_counts['s'] and letter_counts['t']. Here we + are just using a variable c whose value is ‘s' or ‘t', or some other character.

    +

    If that made perfect sense to you, skip the next two paragraphs. Otherwise, read on. + Let's break down that line in a little more detail.

    +

    First, note that, as with all + assignment statements, the right side is evaluated first. In this case letter_counts[c] has to be + evaluated. As with all expressions, we first have to substitute values for variable names. + letter_counts is a variable bound to a dictionary. c is a variable bound to one letter from the + string that txt is bound to (that's what the for statement says to do: + execute lines 8-11 once for each character in txt, with the variable c bound to the current character + on each iteration.) So, let's suppose that the current character is the letter s (we are on line 11). + Then letter_counts[c] looks up the value associated with the key ‘s' in the dictionary letter_counts. If all is working correctly, that value should be the number of times ‘s' has previously occurred. For the sake of argument, suppose it's 25. Then + the right side evaluates to 25 + 1, 26. Watch this play out below.

    + +

    Now we have assigned the value 26 to letter_counts[c]. That is, in dictionary x, we set the value associated with the + key ‘s' (the current value of the variable c) to be 26. In other words, we have incremented the value associated with + the key ‘s' from 25 to 26.

    +

    We can do better still. One other nice thing about using a dictionary is that we don't have to prespecify + what all the letters will be. In this case, we know in advance what the alphabet for + English is, but later in the chapter we will count the occurrences of words, and + we do not know in advance all the of the words that may be used. Rather than pre-specifying + which letters to keep accumulator counts for, we can start with an empty dictionary and + add a counter to the dictionary each time we encounter a new thing that we want to + start keeping count of.

    + + +f = open('scarlet.txt', 'r') +txt = f.read() +# now txt is one long string containing all the characters +letter_counts = {} # start with an empty dictionary +for c in txt: + if c not in letter_counts: + # we have not seen this character before, so initialize a counter for it + letter_counts[c] = 0 + + #whether we've seen it before or not, increment its counter + letter_counts[c] = letter_counts[c] + 1 + +print("t: " + str(letter_counts['t']) + " occurrences") +print("s: " + str(letter_counts['s']) + " occurrences") + + +

    Notice that in the for loop, we no longer need to explicitly ask whether the current + letter is an ‘s' or ‘t'. The increment step on line 11 works for the counter + associated with whatever the current character is. Our code is now accumulating + counts for all letters, not just ‘s' and ‘t'.

    +

    As a final refinement, consider replacing lines 5-11 above with this for loop:

    +
    for c in txt:
    +   letter_counts[c] = letter_counts.get(c, 0) + 1
    +

    This loop uses the get method to retrieve the count for the letter in the + variable c. If no such key is present, get returns 0, and letter_counts[c] is + set to 1 (0 + 1 = 1). If the key is present, get retrieves its value, which is + then incremented.

    +

    + Check your understanding +

    + + +

    Consider example ac10_5_5 above. After the program runs, which of the following will print out True if there are more + occurrences of e than t in the text of A Study in Scarlet, and False if t occurred more frequently?

    +
    + + + +

    print(txt['e'] > txt['t'])

    +
    + +

    txt is the variable that has the original text, not the dictionary of counts.

    +
    +
    + + +

    print(letter_counts['e'] > letter_counts['t'])

    +
    + +

    letter_counts is the dictionary of counts; you want to compare the values associated with 'e' and 't'.

    +
    +
    + + +

    print(letter_counts[e] > letter_counts[t])

    +
    + +

    letter_counts is the dictionary of counts, but you don't want to evaluate e and t as variables in order to determine which keys to look up in the dictionary.

    +
    +
    + + +

    print(letter_counts[c] > txt[c])

    +
    + +

    It seems like maybe you're guessing. Please review the material above and then try again.

    +
    +
    + + +

    print(e[letter_counts] > t[letter_counts])

    +
    + +

    It seems like you've reversed things. The variable that refers to the dictionary goes outside the square brackets; the key you're looking up goes inside.

    +
    +
    +
    +
    + + +

    The print statements at the end of program ac10_5_5 above pick out the specific keys ‘t' and ‘s'. Generalize that + to print out the occurrence counts for all of the characters. To pass the unit tests, your output must + use the same format as the original program above.

    +
    + + +f = open('scarlet.txt', 'r') +txt = f.read() +letter_counts = {} +for c in txt: + if c not in letter_counts: + letter_counts[c] = 0 + + letter_counts[c] = letter_counts[c] + 1 + +# Write a loop that prints the letters and their counts +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertIn("w:4745", self.getOutput().replace(' ',''), "Testing that correct number of w's is output.") + self.assertIn("h:12892", self.getOutput().replace(' ',''), "Testing that correct number of h's is output.") + self.assertIn("G:235", self.getOutput().replace(' ',''), "Testing that correct number of G's is output.") + self.assertEqual(len(self.getOutput().split('\n')), 90, "Testing that correct number of lines are output.") + +myTests().main() + + + +

    Use a for loop to iterate through the keys in letter_counts.

    +
    + +

    Here's a for loop that will do the job:

    +
    for c in letter_counts.keys():
    +    print(c + ": " + str(letter_counts[c]) + " occurrences")
    +
    +
    +

    In the solution to the problem above, note that only those letters that actually occur in the text are shown. Some + punctuation marks that are possible in English, but were never used in the + text, are omitted completely. The blank line partway through the output may surprise you. + That's actually saying that the newline character, \n, appears 5155 times in + the text. In other words, there are 5155 lines of text in the file. Let's + test that hypothesis. Run the following example and check its output:

    + + +f = open('scarlet.txt', 'r') +txt_lines = f.readlines() +# now txt_lines is a list, where each item is one +# line of text from the story +print(len(txt_lines)) + + +

    Now, here are some additional problems to try.

    + + +

    Split the string sentence into a list of words, then create a dictionary named word_counts that contains each word and the number of times it occurs.

    +
    + + +sentence = "The dog chased the rabbit into the forest but the rabbit was too quick." + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(word_counts.items()), sorted([('The', 1), ('dog', 1), ('chased', 1), ('the', 3), ('rabbit', 2), ('into', 1), ('forest', 1), ('but', 1), ('was', 1), ('too', 1), ('quick.', 1)]), "Testing that word_counts was created correctly.") + +myTests().main() + + + +

    The split() method will help split sentence into a list of words.

    +
    + + Here's one possible solution that uses the get method. + word_counts = {} + +for word in sentence.split(): + word_counts[word] = word_counts.get(word, 0) + 1 + +

    Here's one possible solution that uses the get method.

    + +word_counts = {} + +for word in sentence.split(): + word_counts[word] = word_counts.get(word, 0) + 1 + +
    +
    + + +

    Create a dictionary called char_d. The keys of the dictionary should be each character in stri, and the value for each key should be how many times the character occurs in the string.

    +
    + + +stri = "what can I do" + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(char_d.items()), sorted([('w', 1), ('h', 1), ('a', 2), ('t', 1), (' ', 3), ('c', 1), ('n', 1), ('I', 1), ('d', 1), ('o', 1)]), "Testing that char_d has been created correctly.") + +myTests().main() + + + +

    This problem is very similar to the letter-counting problem discussed in this section. Review the solution above + and see if you can apply it to this problem.

    +
    + + Here's a solution that uses the get method: + char_d = {} +for c in stri: + char_d[c] = char_d.get(c, 0) + 1 + +

    Here's a solution that uses the get method:

    + +char_d = {} +for c in stri: + char_d[c] = char_d.get(c, 0) + 1 + +
    +
    + + +
    diff --git a/pretext/Dictionaries/intro-Dictionaries.ptx b/pretext/Dictionaries/intro-Dictionaries.ptx new file mode 100644 index 00000000..b156691d --- /dev/null +++ b/pretext/Dictionaries/intro-Dictionaries.ptx @@ -0,0 +1,192 @@ + +
    + Getting Started with Dictionaries +

    Here is a video to help introduce you to the important concepts in creating and using Python dictionaries.

    +
    diff --git a/pretext/Dictionaries/intro-DictionaryGoals.ptx b/pretext/Dictionaries/intro-DictionaryGoals.ptx new file mode 100644 index 00000000..9e775129 --- /dev/null +++ b/pretext/Dictionaries/intro-DictionaryGoals.ptx @@ -0,0 +1,61 @@ + +
    + Introduction: Dictionaries +

    The compound data types we have studied in detail so far — strings and lists — are sequential collections. This means that the items in the collection are ordered from left to right and they use integers as indices to access the values they contain. This also means that looking for a particular value requires scanning the many items in the list until you find the desired value.

    +

    Data can sometimes be organized more usefully by associating a key with the value we are looking for. For example, if you are asked for the page number for the start of chapter 5 in a large textbook, you might flip around the book looking for the chapter 5 heading. If the chapter number appears in the header or footer of each page, you might be able to find the page number fairly quickly but it's generally easier and faster to go to the index page and see that chapter 5 starts on page 78.

    +

    This sort of direct look up of a value in Python is done with an object called a Dictionary. Dictionaries are a different kind of collection. They are Python's built-in mapping type. A map is an unordered, associative collection. The association, or mapping, is from a key, which can be of any immutable type (e.g., the chapter name and number in the analogy above), to a value (the starting page number), which can be any Python data object. You'll learn how to use these collections in the following chapter.

    + + Learning Goals +

    +

      +
    • +

      To introduce the idea of Key, Value pairs

      +
    • +
    • +

      To introduce the idea of an unordered sequence

      +
    • +
    • +

      To understand the use of parallel construction in lists

      +
    • +
    • +

      To understand the performance benefit and simplicity of a dictionary over parallel lists

      +
    • +
    • +

      To understand that dictionary iteration iterates over keys

      +
    • +
    +

    +
    + + Objectives +

    To correctly use the following:

    +

    +

      +
    • +

      The index operator to add a key,value pair to a dictionary

      +
    • +
    • +

      The del operator to remove an entry

      +
    • +
    • +

      index operator - retrieval by key

      +
    • +
    • +

      search - contains in / not in

      +
    • +
    • +

      items

      +
    • +
    • +

      keys

      +
    • +
    • +

      values

      +
    • +
    • +

      get - with a default value

      +
    • +
    +

    +
    +
    diff --git a/pretext/Dictionaries/toctree.ptx b/pretext/Dictionaries/toctree.ptx new file mode 100644 index 00000000..3d523002 --- /dev/null +++ b/pretext/Dictionaries/toctree.ptx @@ -0,0 +1,16 @@ + + + Dictionaries + + + + + + + + + + + + + diff --git a/pretext/Exceptions/ChapterAssessment.ptx b/pretext/Exceptions/ChapterAssessment.ptx new file mode 100644 index 00000000..1725282d --- /dev/null +++ b/pretext/Exceptions/ChapterAssessment.ptx @@ -0,0 +1,220 @@ + +
    + Chapter Assessment + + +

    The code below takes the list of country, country, and searches to see if it is in the dictionary gold which shows some countries who won gold during the Olympics. However, this code currently does not work. Correctly add try/except clause in the code so that it will correctly populate the list, country_gold, with either the number of golds won or the string Did not get gold.

    +
    + + +gold = {"US":46, "Fiji":1, "Great Britain":27, "Cuba":5, "Thailand":2, "China":26, "France":10} +country = ["Fiji", "Chile", "Mexico", "France", "Norway", "US"] +country_gold = [] + +for x in country: + country_gold.append(gold[x]) + country_gold.append("Did not get gold") + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(country_gold, [1, 'Did not get gold', 'Did not get gold', 10, 'Did not get gold', 46], "Testing that country_gold is assigned to correct values") + +myTests().main() + + +
    + + +

    Provided is a buggy for loop that tries to accumulate some values out of some dictionaries. Insert a try/except so that the code passes.

    +
    + + +di = [{"Puppies": 17, 'Kittens': 9, "Birds": 23, 'Fish': 90, "Hamsters": 49}, {"Puppies": 23, "Birds": 29, "Fish": 20, "Mice": 20, "Snakes": 7}, {"Fish": 203, "Hamsters": 93, "Snakes": 25, "Kittens": 89}, {"Birds": 20, "Puppies": 90, "Snakes": 21, "Fish": 10, "Kittens": 67}] +total = 0 +for diction in di: + total = total + diction['Puppies'] + +print("Total number of puppies:", total) + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(total, 130, "Testing that total has the correct value.") + +myTests().main() + + +
    + + +

    The list, numb, contains integers. Write code that populates the list remainder with the remainder of 36 divided by each number in numb. For example, the first element should be 0, because 36/6 has no remainder. If there is an error, have the string Error appear in the remainder.

    +
    + + +numb = [6, 0, 36, 8, 2, 36, 0, 12, 60, 0, 45, 0, 3, 23] + +remainder = [] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(remainder, [0, 'Error', 0, 4, 0, 0, 'Error', 0, 36, 'Error', 36, 'Error', 0, 13], "Testing that remainder is assigned to correct values.") + +myTests().main() + + +
    + + +

    Provided is buggy code, insert a try/except so that the code passes.

    +
    + + +lst = [2,4,10,42,12,0,4,7,21,4,83,8,5,6,8,234,5,6,523,42,34,0,234,1,435,465,56,7,3,43,23] + +lst_three = [] + +for num in lst: + if 3 % num == 0: + lst_three.append(num) + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(lst_three, [1,3], "Testing that lst_three has the correct values.") + +myTests().main() + + +
    + + +

    Write code so that the buggy code provided works using a try/except. When the codes does not work in the try, have it append to the list attempt the string Error.

    +
    + + +full_lst = ["ab", 'cde', 'fgh', 'i', 'jkml', 'nop', 'qr', 's', 'tv', 'wxy', 'z'] + +attempt = [] + +for elem in full_lst: + attempt.append(elem[1]) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(attempt, ['b', 'd', 'g', 'Error', 'k', 'o', 'r', 'Error', 'v', 'x', 'Error'], "Testing that attempt has the correct values.") + +myTests().main() + + +
    + + +

    The following code tries to append the third element of each list in conts to the new list third_countries. Currently, the code does not work. Add a try/except clause so the code runs without errors, and the string ‘Continent does not have 3 countries' is appended to third_countries instead of producing an error.

    +
    + + +conts = [['Spain', 'France', 'Greece', 'Portugal', 'Romania', 'Germany'], ['USA', 'Mexico', 'Canada'], ['Japan', 'China', 'Korea', 'Vietnam', 'Cambodia'], ['Argentina', 'Chile', 'Brazil', 'Ecuador', 'Uruguay', 'Venezuela'], ['Australia'], ['Zimbabwe', 'Morocco', 'Kenya', 'Ethiopia', 'South Africa'], ['Antarctica']] + +third_countries = [] + +for c in conts: + third_countries.append(c[2]) + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(third_countries, ['Greece', 'Canada', 'Korea', 'Brazil', 'Continent does not have 3 countries', 'Kenya', 'Continent does not have 3 countries'], "Testing that third_countries is created correctly.") + +myTests().main() + + +
    + + +

    The buggy code below prints out the value of the sport in the list sport. Use try/except so that the code will run properly. If the sport is not in the dictionary, ppl_play, add it in with the value of 1.

    +
    + + +sport = ["hockey", "basketball", "soccer", "tennis", "football", "baseball"] + +ppl_play = {"hockey":4, "soccer": 10, "football": 15, "tennis": 8} + +for x in sport: + + print(ppl_play[x]) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(sorted(ppl_play.items()), [('baseball', 1), ('basketball', 1), ('football', 15), ('hockey', 4), ('soccer', 10), ('tennis', 8)], "Testing that ppl_play is assigned to correct values.") + +myTests().main() + + +
    + + +

    Provided is a buggy for loop that tries to accumulate some values out of some dictionaries. Insert a try/except so that the code passes. If the key is not there, initialize it in the dictionary and set the value to zero.

    +
    + + +di = [{"Puppies": 17, 'Kittens': 9, "Birds": 23, 'Fish': 90, "Hamsters": 49}, {"Puppies": 23, "Birds": 29, "Fish": 20, "Mice": 20, "Snakes": 7}, {"Fish": 203, "Hamsters": 93, "Snakes": 25, "Kittens": 89}, {"Birds": 20, "Puppies": 90, "Snakes": 21, "Fish": 10, "Kittens": 67}] +total = 0 +for diction in di: + total = total + diction['Puppies'] + +print("Total number of puppies:", total) + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + accum = 0 + for diction in di: + if 'Puppies' in diction: + accum += 1 + self.assertEqual(accum, 4, "Testing that every dictionary in di has the key 'Puppies'.") + +myTests().main() + + +
    +
    diff --git a/pretext/Exceptions/Exercises.ptx b/pretext/Exceptions/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Exceptions/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Exceptions/intro-exceptions.ptx b/pretext/Exceptions/intro-exceptions.ptx new file mode 100644 index 00000000..9fd61bd9 --- /dev/null +++ b/pretext/Exceptions/intro-exceptions.ptx @@ -0,0 +1,9 @@ + +

    + What is an exception? +

    An exception is a signal that a condition has occurred that can't be easily + handled using the normal flow-of-control of a Python program. Exceptions + are often defined as being errors but this is not always the case. All + errors in Python are dealt with using exceptions, but not all + exceptions are errors.

    +
    diff --git a/pretext/Exceptions/standard-exceptions.ptx b/pretext/Exceptions/standard-exceptions.ptx new file mode 100644 index 00000000..65ef513a --- /dev/null +++ b/pretext/Exceptions/standard-exceptions.ptx @@ -0,0 +1,408 @@ + +
    + Standard Exceptions +

    Most of the standard exceptions built into Python are listed below. + They are organized into related groups based on the types of issues they deal with.

    + + + + + Language Exceptions + + + Description + + + + + StandardError + + + Base class for all built-in exceptions except + StopIteration and SystemExit. + + + + + ImportError + + + Raised when an import statement fails. + + + + + SyntaxError + + + Raised when there is an error in Python syntax. + + + + + IndentationError + + + Raised when indentation is not specified properly. + + + + + NameError + + + Raised when an identifier is not found in the local + or global namespace. + + + + + UnboundLocalError + + + Raised when trying to access a local variable in a + function or method but no value has been assigned to it. + + + + + TypeError + + + Raised when an operation or function is attempted that + is invalid for the specified data type. + + + + + LookupError + + + Base class for all lookup errors. + + + + + IndexError + + + Raised when an index is not found in a sequence. + + + + + KeyError + + + Raised when the specified key is not found in the dictionary. + + + + + ValueError + + + Raised when the built-in function for a data type has + the valid type of arguments, but the arguments have + invalid values specified. + + + + + RuntimeError + + + Raised when a generated error does not fall into any category. + + + + + MemoryError + + + Raised when a operation runs out of memory. + + + + + RecursionError + + + Raised when the maximum recursion depth has been exceeded. + + + + + SystemError + + + Raised when the interpreter finds an internal problem, + but when this error is encountered the Python interpreter + does not exit. + + + +
    + + + + + Math Exceptions + + + Description + + + + + ArithmeticError + + + Base class for all errors that occur for numeric calculation. + You know a math error occurred, but you don't know the + specific error. + + + + + OverflowError + + + Raised when a calculation exceeds maximum limit for a + numeric type. + + + + + FloatingPointError + + + Raised when a floating point calculation fails. + + + + + ZeroDivisonError + + + Raised when division or modulo by zero takes place for + all numeric types. + + + +
    + + + + + I/O Exceptions + + + Description + + + + + FileNotFoundError + + + Raised when a file or directory is requested but doesn't exist. + + + + + IOError + + + Raised when an input/ output operation fails, such as + the print statement or the open() function when trying + to open a file that does not exist. Also raised for + operating system-related errors. + + + + + PermissionError + + + Raised when trying to run an operation without the + adequate access rights. + + + + + EOFError + + + Raised when there is no input from either the raw_input() + or input() function and the end of file is reached. + + + + + KeyboardInterrupt + + + Raised when the user interrupts program execution, + usually by pressing Ctrl+c. + + + +
    + + + + + Other Exceptions + + + Description + + + + + Exception + + + Base class for all exceptions. This catches most + exception messages. + + + + + StopIteration + + + Raised when the next() method of an iterator + does not point to any object. + + + + + AssertionError + + + Raised in case of failure of the Assert statement. + + + + + SystemExit + + + Raised when Python interpreter is quit by using the + sys.exit() function. If not handled in the code, it + causes the interpreter to exit. + + + + + OSError + + + Raises for operating system related errors. + + + + + EnvironmentError + + + Base class for all exceptions that occur outside the + Python environment. + + + + + AttributeError + + + Raised in case of failure of an attribute reference + or assignment. + + + + + NotImplementedError + + + Raised when an abstract method that needs to be + implemented in an inherited class is not actually implemented. + + + +
    +

    All exceptions are objects. The classes that define the objects are organized + in a hierarchy, which is shown below. This is important because the parent + class of a set of related exceptions will catch all exception messages for + itself and its child exceptions. For example, an ArithmeticError + exception will catch itself and all FloatingPointError, OverflowError, + and ZeroDivisionError exceptions.

    + + +BaseException + +-- SystemExit + +-- KeyboardInterrupt + +-- GeneratorExit + +-- Exception + +-- StopIteration + +-- StopAsyncIteration + +-- ArithmeticError + | +-- FloatingPointError + | +-- OverflowError + | +-- ZeroDivisionError + +-- AssertionError + +-- AttributeError + +-- BufferError + +-- EOFError + +-- ImportError + +-- LookupError + | +-- IndexError + | +-- KeyError + +-- MemoryError + +-- NameError + | +-- UnboundLocalError + +-- OSError + | +-- BlockingIOError + | +-- ChildProcessError + | +-- ConnectionError + | | +-- BrokenPipeError + | | +-- ConnectionAbortedError + | | +-- ConnectionRefusedError + | | +-- ConnectionResetError + | +-- FileExistsError + | +-- FileNotFoundError + | +-- InterruptedError + | +-- IsADirectoryError + | +-- NotADirectoryError + | +-- PermissionError + | +-- ProcessLookupError + | +-- TimeoutError + +-- ReferenceError + +-- RuntimeError + | +-- NotImplementedError + | +-- RecursionError + +-- SyntaxError + | +-- IndentationError + | +-- TabError + +-- SystemError + +-- TypeError + +-- ValueError + | +-- UnicodeError + | +-- UnicodeDecodeError + | +-- UnicodeEncodeError + | +-- UnicodeTranslateError + +-- Warning + +-- DeprecationWarning + +-- PendingDeprecationWarning + +-- RuntimeWarning + +-- SyntaxWarning + +-- UserWarning + +-- FutureWarning + +-- ImportWarning + +-- UnicodeWarning + +-- BytesWarning + +-- ResourceWarning + + +
    diff --git a/pretext/Exceptions/toctree.ptx b/pretext/Exceptions/toctree.ptx new file mode 100644 index 00000000..56e7c451 --- /dev/null +++ b/pretext/Exceptions/toctree.ptx @@ -0,0 +1,9 @@ + + + Exceptions + + + + + + diff --git a/pretext/Exceptions/using-exceptions.ptx b/pretext/Exceptions/using-exceptions.ptx new file mode 100644 index 00000000..8905fac7 --- /dev/null +++ b/pretext/Exceptions/using-exceptions.ptx @@ -0,0 +1,35 @@ + +
    + 👩‍💻 When to use try/except +

    The reason to use try/except is when you have a code block to execute that will sometimes run correctly and sometimes not, depending on conditions you can't foresee at the time you're writing the code.

    +

    For example, when you are running code that fetches data from a website, you may run the code when you don't have a network connection or when the external website is temporarily not responding. If your program can still do something useful in those situations, you would like to handle the exception and have the rest of your code execute.

    +

    As another example, suppose you have fetched some nested data from a website into a dictionary d. When you try to extract specific elements, some may be missing: d may not include a particular key, for example. If you anticipate a particular key potentially not being present, you could write an if..else check to take care of it.

    + + +if somekey in d: + # it's there; extract the data + extract_data(d) +else: + skip_this_one(d) + + +

    However, if you're extracting lots of different data, it can get tedious to check for all of them. You can wrap all the data extraction in a try/except.

    + + +try: + extract_data(d) +except: + skip_this_one(d) + + +

    It's considered poor practice to catch all exceptions this way. Instead, python provides a mechanism to specify just certain kinds of exceptions that you'll catch (for example, just catching exceptions of type KeyError, which happens when a key is missing from a dictionary.

    + + +try: + extract_data(d) +except KeyError: + skip_this_one(d) + + +

    We won't go into more details of exception handling in this introductory course. Check out the official python tutorial section on error handling if you're interested.

    +
    diff --git a/pretext/Figures/AdvancedFunctions/Figures/lambda.gif b/pretext/Figures/AdvancedFunctions/Figures/lambda.gif new file mode 100644 index 00000000..c545f360 Binary files /dev/null and b/pretext/Figures/AdvancedFunctions/Figures/lambda.gif differ diff --git a/pretext/Figures/Classes/Figures/fractionpic1.png b/pretext/Figures/Classes/Figures/fractionpic1.png new file mode 100644 index 00000000..4107f287 Binary files /dev/null and b/pretext/Figures/Classes/Figures/fractionpic1.png differ diff --git a/pretext/Figures/Classes/Figures/fractionpic2.png b/pretext/Figures/Classes/Figures/fractionpic2.png new file mode 100644 index 00000000..677db254 Binary files /dev/null and b/pretext/Figures/Classes/Figures/fractionpic2.png differ diff --git a/pretext/Figures/Classes/Figures/fractionpic3.png b/pretext/Figures/Classes/Figures/fractionpic3.png new file mode 100644 index 00000000..d675227d Binary files /dev/null and b/pretext/Figures/Classes/Figures/fractionpic3.png differ diff --git a/pretext/Figures/Classes/Figures/objectpic1.png b/pretext/Figures/Classes/Figures/objectpic1.png new file mode 100644 index 00000000..cf2d3dd1 Binary files /dev/null and b/pretext/Figures/Classes/Figures/objectpic1.png differ diff --git a/pretext/Figures/Classes/Figures/objectpic2.png b/pretext/Figures/Classes/Figures/objectpic2.png new file mode 100644 index 00000000..9b8a37c3 Binary files /dev/null and b/pretext/Figures/Classes/Figures/objectpic2.png differ diff --git a/pretext/Figures/Classes/Figures/objectpic3.png b/pretext/Figures/Classes/Figures/objectpic3.png new file mode 100644 index 00000000..dfb6ffb2 Binary files /dev/null and b/pretext/Figures/Classes/Figures/objectpic3.png differ diff --git a/pretext/Figures/Classes/Figures/objectpic4.png b/pretext/Figures/Classes/Figures/objectpic4.png new file mode 100644 index 00000000..78e592c8 Binary files /dev/null and b/pretext/Figures/Classes/Figures/objectpic4.png differ diff --git a/pretext/Figures/Classes/Figures/objectpic5.png b/pretext/Figures/Classes/Figures/objectpic5.png new file mode 100644 index 00000000..12467b2e Binary files /dev/null and b/pretext/Figures/Classes/Figures/objectpic5.png differ diff --git a/pretext/Figures/Classes/Figures/point.png b/pretext/Figures/Classes/Figures/point.png new file mode 100644 index 00000000..4b7dbcf5 Binary files /dev/null and b/pretext/Figures/Classes/Figures/point.png differ diff --git a/pretext/Figures/Classes/Figures/tooltip_init.png b/pretext/Figures/Classes/Figures/tooltip_init.png new file mode 100644 index 00000000..122cf5a6 Binary files /dev/null and b/pretext/Figures/Classes/Figures/tooltip_init.png differ diff --git a/pretext/Figures/Conditionals/Figures/accum_o.gif b/pretext/Figures/Conditionals/Figures/accum_o.gif new file mode 100644 index 00000000..5f1d450f Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/accum_o.gif differ diff --git a/pretext/Figures/Conditionals/Figures/conditionals_overview.png b/pretext/Figures/Conditionals/Figures/conditionals_overview.png new file mode 100644 index 00000000..3e0aa2ea Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/conditionals_overview.png differ diff --git a/pretext/Figures/Conditionals/Figures/flowchart_chained_conditional.png b/pretext/Figures/Conditionals/Figures/flowchart_chained_conditional.png new file mode 100644 index 00000000..6683282f Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/flowchart_chained_conditional.png differ diff --git a/pretext/Figures/Conditionals/Figures/flowchart_if_else.png b/pretext/Figures/Conditionals/Figures/flowchart_if_else.png new file mode 100644 index 00000000..da6eebe8 Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/flowchart_if_else.png differ diff --git a/pretext/Figures/Conditionals/Figures/flowchart_if_only.png b/pretext/Figures/Conditionals/Figures/flowchart_if_only.png new file mode 100644 index 00000000..8051cb3c Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/flowchart_if_only.png differ diff --git a/pretext/Figures/Conditionals/Figures/flowchart_if_only.svg b/pretext/Figures/Conditionals/Figures/flowchart_if_only.svg new file mode 100644 index 00000000..555ce10f --- /dev/null +++ b/pretext/Figures/Conditionals/Figures/flowchart_if_only.svg @@ -0,0 +1,124 @@ + + + +image/svg+xml + +condition + + + + statements + + + + + + + + + + +True + + + \ No newline at end of file diff --git a/pretext/Figures/Conditionals/Figures/flowchart_nested_conditional.png b/pretext/Figures/Conditionals/Figures/flowchart_nested_conditional.png new file mode 100644 index 00000000..dff98fb0 Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/flowchart_nested_conditional.png differ diff --git a/pretext/Figures/Conditionals/Figures/flowchart_nested_conditional.svg b/pretext/Figures/Conditionals/Figures/flowchart_nested_conditional.svg new file mode 100644 index 00000000..2cfb7e03 --- /dev/null +++ b/pretext/Figures/Conditionals/Figures/flowchart_nested_conditional.svg @@ -0,0 +1,229 @@ + + + +image/svg+xml + + + x < y + + + + + + + + + + + x > y + + + + + statements_a + + + + + statements_b + + + + + statements_c + + + + + + + + + + + + + +True + +True + +False + +False + + + \ No newline at end of file diff --git a/pretext/Figures/Conditionals/Figures/valid_conditionals.png b/pretext/Figures/Conditionals/Figures/valid_conditionals.png new file mode 100644 index 00000000..fb8ed25c Binary files /dev/null and b/pretext/Figures/Conditionals/Figures/valid_conditionals.png differ diff --git a/pretext/Figures/Debugging/Figures/error_dist.png b/pretext/Figures/Debugging/Figures/error_dist.png new file mode 100644 index 00000000..20752e28 Binary files /dev/null and b/pretext/Figures/Debugging/Figures/error_dist.png differ diff --git a/pretext/Figures/Files/Figures/ExampleFileHierarchy.png b/pretext/Figures/Files/Figures/ExampleFileHierarchy.png new file mode 100644 index 00000000..c0007e18 Binary files /dev/null and b/pretext/Figures/Files/Figures/ExampleFileHierarchy.png differ diff --git a/pretext/Figures/FrontBackMatter/Figures/LearningZones.png b/pretext/Figures/FrontBackMatter/Figures/LearningZones.png new file mode 100644 index 00000000..d22c6e7f Binary files /dev/null and b/pretext/Figures/FrontBackMatter/Figures/LearningZones.png differ diff --git a/pretext/Figures/Functions/Figures/blackboxfun.png b/pretext/Figures/Functions/Figures/blackboxfun.png new file mode 100644 index 00000000..d1f4a1e8 Binary files /dev/null and b/pretext/Figures/Functions/Figures/blackboxfun.png differ diff --git a/pretext/Figures/Functions/Figures/blackboxproc.png b/pretext/Figures/Functions/Figures/blackboxproc.png new file mode 100644 index 00000000..e7006472 Binary files /dev/null and b/pretext/Figures/Functions/Figures/blackboxproc.png differ diff --git a/pretext/Figures/Functions/Figures/distance_formula.png b/pretext/Figures/Functions/Figures/distance_formula.png new file mode 100644 index 00000000..bb8f16a9 Binary files /dev/null and b/pretext/Figures/Functions/Figures/distance_formula.png differ diff --git a/pretext/Figures/Functions/Figures/five_squares.png b/pretext/Figures/Functions/Figures/five_squares.png new file mode 100644 index 00000000..02584c72 Binary files /dev/null and b/pretext/Figures/Functions/Figures/five_squares.png differ diff --git a/pretext/Figures/Functions/Figures/five_stars.png b/pretext/Figures/Functions/Figures/five_stars.png new file mode 100644 index 00000000..1f680abe Binary files /dev/null and b/pretext/Figures/Functions/Figures/five_stars.png differ diff --git a/pretext/Figures/Functions/Figures/function_call.gif b/pretext/Figures/Functions/Figures/function_call.gif new file mode 100644 index 00000000..0ca0c790 Binary files /dev/null and b/pretext/Figures/Functions/Figures/function_call.gif differ diff --git a/pretext/Figures/Functions/Figures/nested_squares.png b/pretext/Figures/Functions/Figures/nested_squares.png new file mode 100644 index 00000000..2e7596ca Binary files /dev/null and b/pretext/Figures/Functions/Figures/nested_squares.png differ diff --git a/pretext/Figures/Functions/Figures/regularpolygon.png b/pretext/Figures/Functions/Figures/regularpolygon.png new file mode 100644 index 00000000..08fa1102 Binary files /dev/null and b/pretext/Figures/Functions/Figures/regularpolygon.png differ diff --git a/pretext/Figures/Functions/Figures/squarefun.png b/pretext/Figures/Functions/Figures/squarefun.png new file mode 100644 index 00000000..f8f3c2f7 Binary files /dev/null and b/pretext/Figures/Functions/Figures/squarefun.png differ diff --git a/pretext/Figures/Functions/Figures/star.png b/pretext/Figures/Functions/Figures/star.png new file mode 100644 index 00000000..c3257bee Binary files /dev/null and b/pretext/Figures/Functions/Figures/star.png differ diff --git a/pretext/Figures/Functions/Figures/tess08.png b/pretext/Figures/Functions/Figures/tess08.png new file mode 100644 index 00000000..0cf6eb51 Binary files /dev/null and b/pretext/Figures/Functions/Figures/tess08.png differ diff --git a/pretext/Figures/Functions/Figures/tess_bar_1.png b/pretext/Figures/Functions/Figures/tess_bar_1.png new file mode 100644 index 00000000..d1e714db Binary files /dev/null and b/pretext/Figures/Functions/Figures/tess_bar_1.png differ diff --git a/pretext/Figures/Functions/Figures/tess_spirals.png b/pretext/Figures/Functions/Figures/tess_spirals.png new file mode 100644 index 00000000..50bc7c88 Binary files /dev/null and b/pretext/Figures/Functions/Figures/tess_spirals.png differ diff --git a/pretext/Figures/Functions/Figures/turtleproc.png b/pretext/Figures/Functions/Figures/turtleproc.png new file mode 100644 index 00000000..b3b44477 Binary files /dev/null and b/pretext/Figures/Functions/Figures/turtleproc.png differ diff --git a/pretext/Figures/GeneralIntro/Figures/compile.png b/pretext/Figures/GeneralIntro/Figures/compile.png new file mode 100644 index 00000000..e297f732 Binary files /dev/null and b/pretext/Figures/GeneralIntro/Figures/compile.png differ diff --git a/pretext/Figures/GeneralIntro/Figures/compile.svg b/pretext/Figures/GeneralIntro/Figures/compile.svg new file mode 100644 index 00000000..f03b716c --- /dev/null +++ b/pretext/Figures/GeneralIntro/Figures/compile.svg @@ -0,0 +1,820 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Source Code + + + + + + + + Compiler + + + + + + + + + Output + + + + + + + + + + + + + + Object Code + + + + + + + + Executor + + + + + + + + + + diff --git a/pretext/Figures/GeneralIntro/Figures/interpret.png b/pretext/Figures/GeneralIntro/Figures/interpret.png new file mode 100644 index 00000000..f8a631f3 Binary files /dev/null and b/pretext/Figures/GeneralIntro/Figures/interpret.png differ diff --git a/pretext/Figures/GeneralIntro/Figures/interpret.svg b/pretext/Figures/GeneralIntro/Figures/interpret.svg new file mode 100644 index 00000000..cbf64107 --- /dev/null +++ b/pretext/Figures/GeneralIntro/Figures/interpret.svg @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Source Code + + + + + + + + Interpreter + + + + + + + + + Output + + + + + + + + + + + diff --git a/pretext/Figures/Iteration/Figures/cy.png b/pretext/Figures/Iteration/Figures/cy.png new file mode 100644 index 00000000..e9ff0f1a Binary files /dev/null and b/pretext/Figures/Iteration/Figures/cy.png differ diff --git a/pretext/Figures/Iteration/Figures/image.png b/pretext/Figures/Iteration/Figures/image.png new file mode 100644 index 00000000..5eea32a5 Binary files /dev/null and b/pretext/Figures/Iteration/Figures/image.png differ diff --git a/pretext/Figures/Iteration/Figures/iteration_vs_hardcoding.png b/pretext/Figures/Iteration/Figures/iteration_vs_hardcoding.png new file mode 100644 index 00000000..773855f7 Binary files /dev/null and b/pretext/Figures/Iteration/Figures/iteration_vs_hardcoding.png differ diff --git a/pretext/Figures/Iteration/Figures/new_flowchart_for.png b/pretext/Figures/Iteration/Figures/new_flowchart_for.png new file mode 100644 index 00000000..f45f0368 Binary files /dev/null and b/pretext/Figures/Iteration/Figures/new_flowchart_for.png differ diff --git a/pretext/Figures/Iteration/Figures/sum2n.PNG b/pretext/Figures/Iteration/Figures/sum2n.PNG new file mode 100644 index 00000000..d3600091 Binary files /dev/null and b/pretext/Figures/Iteration/Figures/sum2n.PNG differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/cy.png b/pretext/Figures/MoreAboutIteration/Figures/cy.png new file mode 100644 index 00000000..e9ff0f1a Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/cy.png differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/image.png b/pretext/Figures/MoreAboutIteration/Figures/image.png new file mode 100644 index 00000000..5eea32a5 Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/image.png differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/sum2n.PNG b/pretext/Figures/MoreAboutIteration/Figures/sum2n.PNG new file mode 100644 index 00000000..d3600091 Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/sum2n.PNG differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/while_and_break.png b/pretext/Figures/MoreAboutIteration/Figures/while_and_break.png new file mode 100644 index 00000000..8646eff8 Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/while_and_break.png differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/while_and_continue.png b/pretext/Figures/MoreAboutIteration/Figures/while_and_continue.png new file mode 100644 index 00000000..6c2c5378 Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/while_and_continue.png differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/while_flow.png b/pretext/Figures/MoreAboutIteration/Figures/while_flow.png new file mode 100644 index 00000000..d549f452 Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/while_flow.png differ diff --git a/pretext/Figures/MoreAboutIteration/Figures/while_loop.png b/pretext/Figures/MoreAboutIteration/Figures/while_loop.png new file mode 100644 index 00000000..6201c618 Binary files /dev/null and b/pretext/Figures/MoreAboutIteration/Figures/while_loop.png differ diff --git a/pretext/Figures/Projects/Figures/The_Citadel.png b/pretext/Figures/Projects/Figures/The_Citadel.png new file mode 100644 index 00000000..e84de5ec Binary files /dev/null and b/pretext/Figures/Projects/Figures/The_Citadel.png differ diff --git a/pretext/Figures/Projects/Figures/anscombe_512.svg.png b/pretext/Figures/Projects/Figures/anscombe_512.svg.png new file mode 100644 index 00000000..9666b59a Binary files /dev/null and b/pretext/Figures/Projects/Figures/anscombe_512.svg.png differ diff --git a/pretext/Figures/Projects/Figures/bar_chart.png b/pretext/Figures/Projects/Figures/bar_chart.png new file mode 100644 index 00000000..e577b0c2 Binary files /dev/null and b/pretext/Figures/Projects/Figures/bar_chart.png differ diff --git a/pretext/Figures/Projects/Figures/caesar_wheel.jpg b/pretext/Figures/Projects/Figures/caesar_wheel.jpg new file mode 100644 index 00000000..bb251406 Binary files /dev/null and b/pretext/Figures/Projects/Figures/caesar_wheel.jpg differ diff --git a/pretext/Figures/Projects/Figures/enigma.jpg b/pretext/Figures/Projects/Figures/enigma.jpg new file mode 100644 index 00000000..67ad4d5a Binary files /dev/null and b/pretext/Figures/Projects/Figures/enigma.jpg differ diff --git a/pretext/Figures/Projects/Figures/histogram.png b/pretext/Figures/Projects/Figures/histogram.png new file mode 100644 index 00000000..7e71ba5a Binary files /dev/null and b/pretext/Figures/Projects/Figures/histogram.png differ diff --git a/pretext/Figures/Projects/Figures/pizza_best_fit.png b/pretext/Figures/Projects/Figures/pizza_best_fit.png new file mode 100644 index 00000000..4a731385 Binary files /dev/null and b/pretext/Figures/Projects/Figures/pizza_best_fit.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/BlueTurtleL.png b/pretext/Figures/PythonTurtle/Figures/BlueTurtleL.png new file mode 100644 index 00000000..1d77cdfa Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/BlueTurtleL.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/Turtle3Stamp.png b/pretext/Figures/PythonTurtle/Figures/Turtle3Stamp.png new file mode 100644 index 00000000..1384666f Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/Turtle3Stamp.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TurtleCheckmark4.png b/pretext/Figures/PythonTurtle/Figures/TurtleCheckmark4.png new file mode 100644 index 00000000..4a0e875d Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TurtleCheckmark4.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TurtleCircle.png b/pretext/Figures/PythonTurtle/Figures/TurtleCircle.png new file mode 100644 index 00000000..40056814 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TurtleCircle.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TurtleL4.png b/pretext/Figures/PythonTurtle/Figures/TurtleL4.png new file mode 100644 index 00000000..413ea2f8 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TurtleL4.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TurtleLineToWest.png b/pretext/Figures/PythonTurtle/Figures/TurtleLineToWest.png new file mode 100644 index 00000000..3d538028 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TurtleLineToWest.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TurtleT.png b/pretext/Figures/PythonTurtle/Figures/TurtleT.png new file mode 100644 index 00000000..8f472da6 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TurtleT.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TwoTurtles1.png b/pretext/Figures/PythonTurtle/Figures/TwoTurtles1.png new file mode 100644 index 00000000..ce0e3576 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TwoTurtles1.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/TwoTurtlesL.png b/pretext/Figures/PythonTurtle/Figures/TwoTurtlesL.png new file mode 100644 index 00000000..f337b4e7 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/TwoTurtlesL.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/new_flowchart_for.png b/pretext/Figures/PythonTurtle/Figures/new_flowchart_for.png new file mode 100644 index 00000000..f45f0368 Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/new_flowchart_for.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/star.png b/pretext/Figures/PythonTurtle/Figures/star.png new file mode 100644 index 00000000..c3257bee Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/star.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/tess_clock1.png b/pretext/Figures/PythonTurtle/Figures/tess_clock1.png new file mode 100644 index 00000000..ad61838e Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/tess_clock1.png differ diff --git a/pretext/Figures/PythonTurtle/Figures/turtleTest1.png b/pretext/Figures/PythonTurtle/Figures/turtleTest1.png new file mode 100644 index 00000000..c1732f4c Binary files /dev/null and b/pretext/Figures/PythonTurtle/Figures/turtleTest1.png differ diff --git a/pretext/Figures/Sequences/Figures/indexvalues.png b/pretext/Figures/Sequences/Figures/indexvalues.png new file mode 100644 index 00000000..6d3a8887 Binary files /dev/null and b/pretext/Figures/Sequences/Figures/indexvalues.png differ diff --git a/pretext/Figures/Sequences/Figures/join.gif b/pretext/Figures/Sequences/Figures/join.gif new file mode 100644 index 00000000..54e889c6 Binary files /dev/null and b/pretext/Figures/Sequences/Figures/join.gif differ diff --git a/pretext/Figures/Sequences/Figures/slicing.png b/pretext/Figures/Sequences/Figures/slicing.png new file mode 100644 index 00000000..85fffa81 Binary files /dev/null and b/pretext/Figures/Sequences/Figures/slicing.png differ diff --git a/pretext/Figures/Sequences/Figures/split_default.gif b/pretext/Figures/Sequences/Figures/split_default.gif new file mode 100644 index 00000000..7d71a209 Binary files /dev/null and b/pretext/Figures/Sequences/Figures/split_default.gif differ diff --git a/pretext/Figures/Sequences/Figures/split_on_e.jpeg b/pretext/Figures/Sequences/Figures/split_on_e.jpeg new file mode 100644 index 00000000..5331b194 Binary files /dev/null and b/pretext/Figures/Sequences/Figures/split_on_e.jpeg differ diff --git a/pretext/Figures/SimplePythonData/Figures/compoundInterest.png b/pretext/Figures/SimplePythonData/Figures/compoundInterest.png new file mode 100644 index 00000000..386042c9 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/compoundInterest.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/expression_value_type.png b/pretext/Figures/SimplePythonData/Figures/expression_value_type.png new file mode 100644 index 00000000..543d8a01 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/expression_value_type.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/function_calls.gif b/pretext/Figures/SimplePythonData/Figures/function_calls.gif new file mode 100644 index 00000000..2d0bcb2a Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/function_calls.gif differ diff --git a/pretext/Figures/SimplePythonData/Figures/function_object.png b/pretext/Figures/SimplePythonData/Figures/function_object.png new file mode 100644 index 00000000..5267e786 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/function_object.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/python_shell.png b/pretext/Figures/SimplePythonData/Figures/python_shell.png new file mode 100644 index 00000000..e1da0b15 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/python_shell.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/reassign1.png b/pretext/Figures/SimplePythonData/Figures/reassign1.png new file mode 100644 index 00000000..afd57399 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/reassign1.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/refdiagram1.png b/pretext/Figures/SimplePythonData/Figures/refdiagram1.png new file mode 100644 index 00000000..f1828833 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/refdiagram1.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/shell_expressions.png b/pretext/Figures/SimplePythonData/Figures/shell_expressions.png new file mode 100644 index 00000000..65bcca58 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/shell_expressions.png differ diff --git a/pretext/Figures/SimplePythonData/Figures/square_function.gif b/pretext/Figures/SimplePythonData/Figures/square_function.gif new file mode 100644 index 00000000..e4261ab7 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/square_function.gif differ diff --git a/pretext/Figures/SimplePythonData/Figures/type_cast.gif b/pretext/Figures/SimplePythonData/Figures/type_cast.gif new file mode 100644 index 00000000..eee95ba0 Binary files /dev/null and b/pretext/Figures/SimplePythonData/Figures/type_cast.gif differ diff --git a/pretext/Figures/TestCases/Figures/distance_formula.png b/pretext/Figures/TestCases/Figures/distance_formula.png new file mode 100644 index 00000000..bb8f16a9 Binary files /dev/null and b/pretext/Figures/TestCases/Figures/distance_formula.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/refdiag1.png b/pretext/Figures/TransformingSequences/Figures/refdiag1.png new file mode 100644 index 00000000..42c80ace Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/refdiag1.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/refdiag2.png b/pretext/Figures/TransformingSequences/Figures/refdiag2.png new file mode 100644 index 00000000..3d9e55f7 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/refdiag2.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/refdiag3.png b/pretext/Figures/TransformingSequences/Figures/refdiag3.png new file mode 100644 index 00000000..13a548b2 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/refdiag3.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/refdiag4.png b/pretext/Figures/TransformingSequences/Figures/refdiag4.png new file mode 100644 index 00000000..c061f435 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/refdiag4.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a1_1.png b/pretext/Figures/TransformingSequences/Figures/week3a1_1.png new file mode 100644 index 00000000..b56c2c04 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a1_1.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a1_2.png b/pretext/Figures/TransformingSequences/Figures/week3a1_2.png new file mode 100644 index 00000000..af01e3de Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a1_2.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a2_1.png b/pretext/Figures/TransformingSequences/Figures/week3a2_1.png new file mode 100644 index 00000000..322c817f Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a2_1.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a2_2.png b/pretext/Figures/TransformingSequences/Figures/week3a2_2.png new file mode 100644 index 00000000..f217b61d Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a2_2.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a2_3.png b/pretext/Figures/TransformingSequences/Figures/week3a2_3.png new file mode 100644 index 00000000..5e0126a6 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a2_3.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a2_4.png b/pretext/Figures/TransformingSequences/Figures/week3a2_4.png new file mode 100644 index 00000000..a851ace2 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a2_4.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a3_1.png b/pretext/Figures/TransformingSequences/Figures/week3a3_1.png new file mode 100644 index 00000000..f6584b16 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a3_1.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a3_2.png b/pretext/Figures/TransformingSequences/Figures/week3a3_2.png new file mode 100644 index 00000000..8b440bb4 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a3_2.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a3_3.png b/pretext/Figures/TransformingSequences/Figures/week3a3_3.png new file mode 100644 index 00000000..45f40c57 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a3_3.png differ diff --git a/pretext/Figures/TransformingSequences/Figures/week3a3_4.png b/pretext/Figures/TransformingSequences/Figures/week3a3_4.png new file mode 100644 index 00000000..3a057485 Binary files /dev/null and b/pretext/Figures/TransformingSequences/Figures/week3a3_4.png differ diff --git a/pretext/Figures/_static/LutherBellPic.jpg b/pretext/Figures/_static/LutherBellPic.jpg new file mode 100644 index 00000000..c6469a3b Binary files /dev/null and b/pretext/Figures/_static/LutherBellPic.jpg differ diff --git a/pretext/Figures/_static/cy.png b/pretext/Figures/_static/cy.png new file mode 100644 index 00000000..e9ff0f1a Binary files /dev/null and b/pretext/Figures/_static/cy.png differ diff --git a/pretext/Figures/_static/ducky.jpg b/pretext/Figures/_static/ducky.jpg new file mode 100755 index 00000000..54268f46 Binary files /dev/null and b/pretext/Figures/_static/ducky.jpg differ diff --git a/pretext/Figures/_static/goldygopher.png b/pretext/Figures/_static/goldygopher.png new file mode 100644 index 00000000..a05d68ea Binary files /dev/null and b/pretext/Figures/_static/goldygopher.png differ diff --git a/pretext/Figures/_static/yawning_squirrel.jpg b/pretext/Figures/_static/yawning_squirrel.jpg new file mode 100644 index 00000000..9f33b712 Binary files /dev/null and b/pretext/Figures/_static/yawning_squirrel.jpg differ diff --git a/pretext/Files/AlternativeFileReadingMethods.ptx b/pretext/Files/AlternativeFileReadingMethods.ptx new file mode 100644 index 00000000..675b42b1 --- /dev/null +++ b/pretext/Files/AlternativeFileReadingMethods.ptx @@ -0,0 +1,213 @@ + +
    + Alternative File Reading Methods +

    Once you have a file object, the thing returned by the open function, Python provides three methods to read data + from that object. The read() method returns the entire contents of the file as a single string (or just some + characters if you provide a number as an input parameter. The readlines method returns the entire contents of + the entire file as a list of strings, where each item in the list is one line of the file. The readline + method reads one line from the file and returns it as a string. The strings returned by readlines or + readline will contain the newline character at the end. summarizes these + methods and the following session shows them in action.

    + + + + + Method Name + + + Use + + + Explanation + + + + + write + + + filevar.write(astring) + + + Add a string to the end of the file. + filevar must refer to a file that has + been opened for writing. + + + + + read(n) + + + filevar.read() + + + Read and return a string of n + characters, or the entire file as a + single string if n is not provided. + + + + + readline(n) + + + filevar.readline() + + + Read and return the next line of the file with + all text up to and including the + newline character. If n is provided as + a parameter, then only n characters + will be returned if the line is longer + than n. Note the parameter n is not supported in the browser version of Python, and in fact is rarely used in practice, you can safely ignore it. + + + + + readlines(n) + + + filevar.readlines() + + + Returns a list of strings, each + representing a single line of the file. + If n is not provided then all lines of + the file are returned. If n is provided + then n characters are read but n is + rounded up so that an entire line is + returned. Note Like readline readlines ignores the parameter n in the browser. + + + +
    +

    In this course, we will generally either iterate through the lines returned by readlines() with a for loop, + or use read() to get all of the contents as a single string.

    +

    In other programming languages, where they don't have the convenient for loop method of going through the lines + of the file one by one, they use a different pattern which requires a different kind of loop, the while loop. + Fortunately, you don't need to learn this other pattern, and we will put off consideration of while loops + until later in this course. We don't need them for handling data from files.

    + +

    A common error that novice programmers make is not realizing that all these ways of reading the file contents, + use up the file. After you call readlines(), if you call it again you'll get an empty list.

    +
    +

    + Check your Understanding +

    + <pre id="school_prompt.txt"> +Writing essays for school can be difficult but +many students find that by researching their topic that they +have more to say and are better informed. Here are the university +we require many undergraduate students to take a first year writing requirement +so that they can +have a solid foundation for their writing skills. This comes +in handy for many students. +Different schools have different requirements, but everyone uses +writing at some point in their academic career, be it essays, research papers, +technical write ups, or scripts. +</pre> + + +

    +

      +
    1. +

      Using the file school_prompt2.txt, find the number of characters in the file and assign that value to the variable num_char.

      +
    2. +
    +

    +
    + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num_char, 537, "Testing that num_char has the correct value.") + +myTests().main() + + +
    + <pre id="travel_plans.txt"> +This summer I will be travelling. +I will go to... +Italy: Rome +Greece: Athens +England: London, Manchester +France: Paris, Nice, Lyon +Spain: Madrid, Barcelona, Granada +Austria: Vienna +I will probably not even want to come back! +However, I wonder how I will get by with all the different languages. +I only know English! +</pre> + + +

    +

      +
    1. +

      Find the number of lines in the file, travel_plans2.txt, and assign it to the variable num_lines.

      +
    2. +
    +

    +
    + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(num_lines, 11, "Testing that num_lines is assigned to correct value.") + +myTests().main() + + +
    + <pre id="emotion_words.txt"> +Sad upset blue down melancholy somber bitter troubled +Angry mad enraged irate irritable wrathful outraged infuriated +Happy cheerful content elated joyous delighted lively glad +Confused disoriented puzzled perplexed dazed befuddled +Excited eager thrilled delighted +Scared afraid fearful panicked terrified petrified startled +Nervous anxious jittery jumpy tense uneasy apprehensive +</pre> + + +

    +

      +
    1. +

      Create a string called first_forty that is comprised of the first 40 characters of emotion_words2.txt.

      +
    2. +
    +

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(first_forty, 'Sad upset blue down melancholy somber bi', "Testing that first_forty was created correctly.") +myTests().main() + + +
    + + + + + + +
    diff --git a/pretext/Files/CSVFormat.ptx b/pretext/Files/CSVFormat.ptx new file mode 100644 index 00000000..765cd80e --- /dev/null +++ b/pretext/Files/CSVFormat.ptx @@ -0,0 +1,15 @@ + +
    + CSV Format +

    CSV stands for Comma Separated Values. If you print out tabular data in CSV format, it can be easily imported into other programs like Excel, Google spreadsheets, or a statistics package (R, stata, SPSS, etc.).

    +

    For example, we can make a file with the following contents. If you save it as a file name grades.csv, then you could import it into one of those programs. The first line gives the column names and the later lines each give the data for one row.

    + + +Name,score,grade +Jamal,98,A+ +Eloise,87,B+ +Madeline,99,A+ +Wei,94,A + + +
    diff --git a/pretext/Files/ChapterAssessment.ptx b/pretext/Files/ChapterAssessment.ptx new file mode 100644 index 00000000..65ef5d24 --- /dev/null +++ b/pretext/Files/ChapterAssessment.ptx @@ -0,0 +1,195 @@ + +
    + Chapter Assessment + + + + + + + + +

    The textfile, travel_plans.txt, contains the summer travel plans for someone with some commentary. Find the total number of characters in the file and save to the variable num.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num, 316, "Testing that num value is assigned to correct value.") + +myTests().main() + + +
    + + +

    We have provided a file called emotion_words.txt that contains lines of words that describe emotions. Find the total number of words in the file and assign this value to the variable num_words.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num_words, 48, "Testing that num_words was assigned to the correct value.") + +myTests().main() + + +
    + + +

    Assign to the variable num_lines the number of lines in the file school_prompt.txt.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num_lines, 10, "Testing that num_lines has the correct value.") + +myTests().main() + + +
    + + +

    Assign the first 30 characters of school_prompt.txt as a string to the variable beginning_chars.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(len(beginning_chars), 30, "Testing that beginning_chars has the correct length.") + self.assertEqual(beginning_chars, "Writing essays for school can ", "Testing that beginning_chars has the correct string.") + +myTests().main() + + +
    + + +

    Challenge: Using the file school_prompt.txt, assign the third word of every line to a list called three.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(three, ['for', 'find', 'to', 'many', 'they', 'solid', 'for', 'have', 'some', 'ups,'], "Testing that three has the correct value.") + +myTests().main() + + +
    + + +

    Challenge: Create a list called emotions that contains the first word of every line in emotion_words.txt.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(emotions, ['Sad', 'Angry', 'Happy', 'Confused', 'Excited', 'Scared', 'Nervous'], "Testing that emotions was created correctly.") + +myTests().main() + + +
    + + +

    Assign the first 33 characters from the textfile, travel_plans.txt to the variable first_chars.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(first_chars, "This summer I will be travelling.", "Testing that first_chars is assigned to correct value.") + +myTests().main() + + +
    + + +

    Challenge: Using the file school_prompt.txt, if the character ‘p' is in a word, then add the word to a list called p_words.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(p_words, ['topic', 'point', 'papers,', 'ups,', 'scripts.'], "Testing that p_words has the correct list.") + +myTests().main() + + +
    + + +

    Read in the contents of the file SP500.txt which has monthly data for 2016 and 2017 about the S&P 500 closing prices as well as some other financial indicators, including the Long Term Interest Rate, which is interest rate paid on 10-year U.S. government bonds.

    +

    Write a program that computes the average closing price (the second column, labeled SP500) and the highest long-term interest rate. Both should be computed only for the period from June 2016 through May 2017. Save the results in the variables mean_SP and max_interest.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertLess(abs(mean_SP - 2237), 0.5, "Testing that mean_SP is within 0.5 of the correct value. Make sure to use only the correct 12 month period.") + self.assertEqual(max_interest, 2.49, "Testing the max_interest is correct. Make sure to use only the correct 12 month period.") + +myTests().main() + + +
    + + +
    diff --git a/pretext/Files/Exercises.ptx b/pretext/Files/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Files/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Files/FilesRecipe.ptx b/pretext/Files/FilesRecipe.ptx new file mode 100644 index 00000000..2ff36aaf --- /dev/null +++ b/pretext/Files/FilesRecipe.ptx @@ -0,0 +1,26 @@ + +

    + Recipe for Reading and Processing a File +

    Here's a foolproof recipe for processing the contents of a text file. If you've fully digested the previous sections, + you'll understand that there are other options as well. Some of those options are preferable for some situations, and + some are preferred by python programmers for efficiency reasons. In this course, though, you can always succeed by + following this recipe.

    +

    #1. Open the file using with and open.

    +

    #2. Use .readlines() to get a list of the lines of text in the file.

    +

    #3. Use a for loop to iterate through the strings in the list, each being one line from the file. On each iteration, process that line of text

    +

    #4. When you are done extracting data from the file, continue writing your code outside of the indentation. Using with will automatically close the file once the program exits the with block.

    +
    fname = "yourfile.txt"
    +with open(fname, 'r') as fileref:         # step 1
    +    lines = fileref.readlines()           # step 2
    +    for lin in lines:                     # step 3
    +        #some code that references the variable lin
    +#some other code not relying on fileref   # step 4
    +

    However, this will not be good to use when you are working with large data. Imagine working with a datafile that has 1000 + rows of data. It would take a long time to read in all the data and then if you had to iterate over it, even more time + would be necessary. This would be a case where programmers prefer another option for efficiency reasons.

    +

    This option involves iterating over the file itself while still iterating over each line in the file:

    +
    with open(fname, 'r') as fileref:
    + for lin in fileref:
    +     ## some code that uses line as the current line of the file
    +     ## some more code
    +
    diff --git a/pretext/Files/FindingaFileonyourDisk.ptx b/pretext/Files/FindingaFileonyourDisk.ptx new file mode 100644 index 00000000..be9606f8 --- /dev/null +++ b/pretext/Files/FindingaFileonyourDisk.ptx @@ -0,0 +1,107 @@ + +
    + Finding a File in your Filesystem +

    In the examples we have provided, and in the simulated file system that we've built for this online textbook, all files sit in a single directory, and it's the same directory where the Python program is stored. Thus, we can just write open('myfile.txt', 'r').

    +

    If you have installed Python on your local computer and you are trying to get file reading and writing operations to work, there's a little more that you may need to understand. Computer operating systems (like Windows and the Mac OS) organize files into a hierarchy of folders, with some folders containing other folders.

    + +

    If your file and your Python program are in the same directory you can simply use + the filename. For example, with the file hierarchy in the diagram, the file myPythonProgram.py could contain the code open('data1.txt', 'r').

    +

    If your file and your Python program are in different directories, however, then you need to specify a path. You can think of the filename as the short name for a file, and the path as the full name. Typically, you will specify a relative file path, which says where to find the file to open, relative to the directory where the code is running from. For example, the file myPythonProgram.py could contain the code open('../myData/data2.txt', 'r'). The ../ means to go up one level in the directory structure, to the containing folder (allProjects); myData/ says to descend into the myData subfolder.

    +

    There is also an option to use an absolute file path. For example, suppose the file structure in the figure is stored on a computer in the user's home directory, /Users/joebob01/myFiles. Then code in any Python program running from any file folder could open data2.txt via open('/Users/joebob01/myFiles/allProjects/myData/data2.txt', 'r'). You can tell an absolute file path because it begins with a /. + If you will ever move your programs and data to another computer (e.g., to share them with someone else), it will be much more convenient if your use relative file paths rather than absolute. That way, if you preserve the folder structure when moving everything, you won't need to change your code. If you use absolute paths, then the person you are sharing with probably not have the same home directory name, /Users/joebob01/. Note that Python pathnames follow the UNIX conventions (Mac OS is a UNIX variant), rather than the Windows file pathnames that use : and \. The Python interpreter will translate to Windows pathnames when running on a Windows machine; you should be able to share your Python program between a Windows machine and a MAC without having to rewrite the file open commands.

    + +

    For security reasons, our code running in your browser doesn't read or write files to your computer's file + system. Later, when you run Python natively on your own computer, you will be able to truly read files, using + path names as suggested above. To get you started, we have faked it by providing a few files that you can read + as if they were on your hard disk. In this chapter, we simulate the existence of one textfile; you can't open any other files from your local computer from textbook code running in your browser.

    +
    +

    + Check Your Understanding +

    + + +

    Say you are in a directory called Project. In it, you have a file with your Python code. You would like to read in data from a file called YearlyProjections.csv which is in a folder called CompanyData, which is inside of Project. What is the best way to open the file in your Python program?

    +
    + + + +

    open("YearlyProjections.csv", "r")

    +
    + +

    This would try to open a file inside of Project (but that is not where the file is.)

    +
    +
    + + +

    open("../CompanyData/YearlyProjections.csv", "r")

    +
    + +

    This would go to the parent directory of Project and look for a subdirectory of that called CompanyData. But CompanyData is inside Project so it wouldn't be found.

    +
    +
    + + +

    open("CompanyData/YearlyProjections.csv", "r")

    +
    + +

    Yes, this is how you can access the file!

    +
    +
    + + +

    open("Project/CompanyData/YearlyProjections.csv", "r")

    +
    + +

    This would try to find a subdirectory Project of the current directory called Project.

    +
    +
    + + +

    open("../YearlyProjections.csv", "r")

    +
    + +

    Remember that '..' will bring you up one level to the parent directory. This would try to open a csv file in the parent directory of Project (but that is not where the file is.)

    +
    +
    +
    +
    + + +

    Which of the following paths are relative file paths?

    +
    + + + +

    "Stacy/Applications/README.txt"

    +
    + +

    Yes, this is a relative file path. You can tell by the lack of "/" at the beginning of the path.

    +
    +
    + + +

    "/Users/Raquel/Documents/graduation_plans.doc"

    +
    + +

    This is an absolute file path. All absolute file paths start with "/".

    +
    +
    + + +

    "/private/tmp/swtag.txt"

    +
    + +

    This is an absolute file path. Not all absolute file paths contain "User"! Instead, check to see if the path starts with "/".

    +
    +
    + + +

    "ScienceData/ProjectFive/experiment_data.csv"

    +
    + +

    Yes, this is a relative file path. You can tell by the lack of "/" at the beginning of the path.

    +
    +
    +
    +
    +
    diff --git a/pretext/Files/Glossary.ptx b/pretext/Files/Glossary.ptx new file mode 100644 index 00000000..b1572247 --- /dev/null +++ b/pretext/Files/Glossary.ptx @@ -0,0 +1,31 @@ + +
    + Glossary + + + open +

    You must open a file before you can read its contents.

    +
    + + close +

    When you are done with a file, you should close it.

    +
    + + read +

    Will read the entire contents of a file as a string. This is often used in an assignment statement + so that a variable can reference the contents of the file.

    +
    + + readline +

    Will read a single line from the file, up to and including the first instance of the newline character.

    +
    + + readlines +

    Will read the entire contents of a file into a list where each line of the file is a string and is an element in the list.

    +
    + + write +

    Will add characters to the end of a file that has been opened for writing.

    +
    +
    +
    diff --git a/pretext/Files/Iteratingoverlinesinafile.ptx b/pretext/Files/Iteratingoverlinesinafile.ptx new file mode 100644 index 00000000..a5a37431 --- /dev/null +++ b/pretext/Files/Iteratingoverlinesinafile.ptx @@ -0,0 +1,112 @@ + +
    + Iterating over lines in a file +

    We will now use this file as input in a program that will do some data processing. In the program, we will + examine each line of the file and print it with some additional text. Because readlines() returns a list of + lines of text, we can use the for loop to iterate through each line of the file.

    +

    A line of a file is defined to be a sequence of characters up to and including a special character called + the newline character. If you evaluate a string that contains a newline character you will see the character + represented as \n. If you print a string that contains a newline you will not see the \n, you will just + see its effects (a carriage return).

    +

    As the for loop iterates through each line of the file the loop variable will contain the current line of the + file as a string of characters. The general pattern for processing each line of a text file is as follows:

    +
    for line in myFile.readlines():
    +    statement1
    +    statement2
    +    ...
    +

    To process all of our olympics data, we will use a for loop to iterate over the lines of the file. Using + the split method, we can break each line into a list containing all the fields of interest about the + athlete. We can then take the values corresponding to name, team and event to + construct a simple sentence.

    + + +olympicsfile = open("olympics.txt", "r") + +for aline in olympicsfile.readlines(): + values = aline.split(",") + print(values[0], "is from", values[3], "and is on the roster for", values[4]) + +olympicsfile.close() + + +

    To make the code a little simpler, and to allow for more efficient processing, Python provides a built-in way to + iterate through the contents of a file one line at a time, without first reading them all into a list. Some students find this confusing initially, so we don't recommend doing it this way, until you get a + little more comfortable with Python. But this idiom is preferred by Python programmers, so you should be prepared + to read it. And when you start dealing with big files, you may notice the efficiency gains of using it.

    + + +olympicsfile = open("olympics.txt", "r") + +for aline in olympicsfile: + values = aline.split(",") + print(values[0], "is from", values[3], "and is on the roster for", values[4]) + +olympicsfile.close() + + + <pre hidden id="olympics.txt"> +Name,Sex,Age,Team,Event,Medal +A Dijiang,M,24,China,Basketball,NA +A Lamusi,M,23,China,Judo,NA +Gunnar Nielsen Aaby,M,24,Denmark,Football,NA +Edgar Lindenau Aabye,M,34,Denmark/Sweden,Tug-Of-War,Gold +Christine Jacoba Aaftink,F,21,Netherlands,Speed Skating,NA +Christine Jacoba Aaftink,F,25,Netherlands,Speed Skating,NA +Christine Jacoba Aaftink,F,25,Netherlands,Speed Skating,NA +Christine Jacoba Aaftink,F,27,Netherlands,Speed Skating,NA +Per Knut Aaland,M,31,United States,Cross Country Skiing,NA +Per Knut Aaland,M,33,United States,Cross Country Skiing,NA +John Aalberg,M,31,United States,Cross Country Skiing,NA +John Aalberg,M,33,United States,Cross Country Skiing,NA +"Cornelia ""Cor"" Aalten (-Strannood)",F,18,Netherlands,Athletics,NA +"Cornelia ""Cor"" Aalten (-Strannood)",F,18,Netherlands,Athletics,NA +Antti Sami Aalto,M,26,Finland,Ice Hockey,NA +"Einar Ferdinand ""Einari"" Aalto",M,26,Finland,Swimming,NA +Jorma Ilmari Aalto,M,22,Finland,Cross Country Skiing,NA +Jyri Tapani Aalto,M,31,Finland,Badminton,NA +Minna Maarit Aalto,F,30,Finland,Sailing,NA +Minna Maarit Aalto,F,34,Finland,Sailing,NA +Pirjo Hannele Aalto (Mattila-),F,32,Finland,Biathlon,NA +Timo Antero Aaltonen,M,31,Finland,Athletics,NA +Win Valdemar Aaltonen,M,54,Finland,Art Competitions,NA +</pre> +

    + Check your Understanding +

    + <pre id="emotion_words.txt"> +Sad upset blue down melancholy somber bitter troubled +Angry mad enraged irate irritable wrathful outraged infuriated +Happy cheerful content elated joyous delighted lively glad +Confused disoriented puzzled perplexed dazed befuddled +Excited eager thrilled delighted +Scared afraid fearful panicked terrified petrified startled +Nervous anxious jittery jumpy tense uneasy apprehensive +</pre> + + +

    +

      +
    1. +

      Write code to find out how many lines are in the file emotion_words.txt as shown above. Save this value to the variable num_lines. Do not use the len method.

      +
    2. +
    +

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num_lines, 7, "Testing that num_lines was assigned to the correct value.") + self.assertNotIn('len', self.getEditorText(), "Checking that you didn't use the len function.") + +myTests().main() + + +
    +
    diff --git a/pretext/Files/ReadingCSVFiles.ptx b/pretext/Files/ReadingCSVFiles.ptx new file mode 100644 index 00000000..b1aa540f --- /dev/null +++ b/pretext/Files/ReadingCSVFiles.ptx @@ -0,0 +1,39 @@ + +
    + Reading in data from a CSV File +

    We are able to read in CSV files the same way we have with other text files. Because of the standardized structure of the data, there is a common pattern for processing it. To practice this, + we will be using data about olympic events.

    +

    Typically, CSV files will have a header as the first line, which contains column names. Then, + each following row in the file will contain data that corresponds to the appropriate columns.

    +

    All file methods that we have mentioned - read, readline, and readlines, and simply iterating over the file object itself - will work on CSV files. In our examples, we will iterate over the lines. Because the values on each line are separated with commas, we can use the .split() method to parse each line into a collection of separate value.

    + + +fileconnection = open("olympics.txt", 'r') +lines = fileconnection.readlines() +header = lines[0] +field_names = header.strip().split(',') +print(field_names) +for row in lines[1:]: + vals = row.strip().split(',') + if vals[5] != "NA": + print("{}: {}; {}".format( + vals[0], + vals[4], + vals[5])) + + +

    In the above code, we open the file, olympics.txt, which contains data on some olympians. The contents are similar to our previous olympics file, but include an extra column with information about medals they won.

    +

    We split the first row to get the field names. We split other rows to get values. Note that we specify to split on commas by passing that as a parameter. Also note that we first pass the row through the .strip() method to get rid of the trailing n.

    +

    Once we have parsed the lines into their separate values, we can use those values in the program. For example, in the code above, we select only those rows where the olympian won a medal, and we print out only three of the fields, in a different format.

    +

    Note that the trick of splitting the text for each row based on the presence of commas only works because commas are not used in any of the field values. Suppose that some of our events were more specific, and used commas. For example, Swimming, 100M Freestyle. How will a program processing a .csv file know when a comma is separating columns, and when it is just part of the text string giving a value within a column?

    +

    The CSV format is actually a little more general than we have described and has a couple of solutions for that problem. One alternative format uses a different column separator, such as | or a tab (\t). Sometimes, when a tab is used, the format is called tsv, for tab-separated values). If you get a file using a different separator, you can just call the .split('|') or .split('\t').

    +

    The other advanced CSV format uses commas to separate but encloses all values in double quotes.

    +

    For example, the data file might look like:

    + <pre id="sample.txt"> +"Name","Sex","Age","Team","Event","Medal" +"A Dijiang","M","24","China","Basketball","NA" +"Edgar Lindenau Aabye","M","34","Denmark/Sweden","Tug-Of-War","Gold" +"Christine Jacoba Aaftink","F","21","Netherlands","Speed Skating, 1500M","NA" +</pre> +

    If you are reading a .csv file that has enclosed all values in double quotes, it's actually a pretty tricky programming problem to split the text for one row into a list of values. You won't want to try to do it directly. Instead, you should use python's built-in csv module. However, there's a bit of a learning curve for that, and we find that students gain a better understanding of reading CSV format by first learning to read the simple, unquoted format and split lines on commas.

    +
    diff --git a/pretext/Files/ReadingaFile.ptx b/pretext/Files/ReadingaFile.ptx new file mode 100644 index 00000000..65a9c968 --- /dev/null +++ b/pretext/Files/ReadingaFile.ptx @@ -0,0 +1,23 @@ + +
    + Reading a File +

    As an example, suppose we have a text file called olympics.txt that contains + the data representing about olympians across different years. The contents of the file are shown at the bottom of the page.

    +

    To open this file, we would call the open function. The variable, + fileref, now holds a reference to the file object returned by + open. When we are finished with the file, we can close it by using + the close method. After the file is closed any further attempts to + use fileref will result in an error.

    + + +fileref = open("olympics.txt", "r") +## other code here that refers to variable fileref +fileref.close() + + + +

    A common mistake is to get confused about whether you are providing a variable name or a string literal as an input to the open function. In the code above, olympics.txt is a string literal that should correspond to the name of a file on your computer. If you put something without quotes, like open(x, "r"), it will be treated as a variable name. In this example, x should be a variable that's already been bound to a string value like olympics.txt.

    +
    + + +
    diff --git a/pretext/Files/WPTipsHandlingFiles.ptx b/pretext/Files/WPTipsHandlingFiles.ptx new file mode 100644 index 00000000..38dad31a --- /dev/null +++ b/pretext/Files/WPTipsHandlingFiles.ptx @@ -0,0 +1,11 @@ + +
    + 👩‍💻 Tips on Handling Files +

    When working with files, there are a few things to keep in mind. When naming files, it's best to not include spaces. + While most operating systems can handle files with spaces in their names, not all can.

    +

    Additionally, suffixes in files names, for example the .txt in FileNameExample.txt, are not magic. Instead, these + suffixes are a convention. For some operating systems the suffixes have no special significance, and only have meaning when + used in a program. Other operating systems infer information from the suffixes - for example, .EXE is a suffix that + means a file is executable.

    +

    It's a good idea to follow the conventions. If a file contains CSV formatted data, name it with the extension .csv, not .txt. A Python program will be able to read it either way, but if you follow the convention you will help other people guess what's in the file. And you will also help the computer's operating system to guess what application program it should open when you double-click on the file.

    +
    diff --git a/pretext/Files/With.ptx b/pretext/Files/With.ptx new file mode 100644 index 00000000..313930cf --- /dev/null +++ b/pretext/Files/With.ptx @@ -0,0 +1,40 @@ + +
    + Using <c>with</c> for Files + +

    This section is a bit of an advanced topic and can be easily skipped. But with statements are becoming very common and it doesn't hurt to know about them in case you run into one in the wild.

    +
    +

    Now that you have seen and practiced a bit with opening and closing files, there is another mechanism that Python + provides for us that cleans up the often forgotten close. Forgetting to close a file does not necessarily cause a runtime + error in the kinds of programs you typically write in an introductory programing course. However if you are writing a + program that may run for days or weeks at a time that does a lot of file reading and writing you may run into trouble.

    +

    Python has the notion of a context manager that automates the process of doing + common operations at the start of some task, as well as automating certain operations at the end of some task. For reading and writing a file, the normal operation is to open the file and assign it to a variable. At the end + of working with a file the common operation is to make sure that file is closed.

    +

    The Python with statement makes using context managers easy. The general form of a with statement is:

    +
    with <create some object that understands context> as <some name>:
    +    do some stuff with the object
    +    ...
    +

    When the program exits the with block, the context manager handles the common stuff that normally happens at the end, in our case closing a file. A simple example will clear up all of this abstract discussion of contexts. Here are the contents of a file called mydata.txt.

    + + + + +with open('mydata.txt', 'r') as md: + for line in md: + print(line) +# continue on with other code + + +

    The first line of the with statement opens the file and assigns it to the variable md. Then we can iterate over the file in any of the usual ways. When we are done we simply stop indenting and let Python take care of closing the file and cleaning up.

    +

    This is equivalent to code that specifically closes the file at the end, but neatly marks the set of code that can make use of the open file as an indented block, and ensures that the programmer won't forget to include the .close() invocation.

    + + +md = open('mydata.txt', 'r') +for line in md: + print(line) +md.close() +# continue with other code + + +
    diff --git a/pretext/Files/WritingCSVFiles.ptx b/pretext/Files/WritingCSVFiles.ptx new file mode 100644 index 00000000..5c2894ff --- /dev/null +++ b/pretext/Files/WritingCSVFiles.ptx @@ -0,0 +1,74 @@ + +
    + Writing data to a CSV File +

    The typical pattern for writing data to a CSV file will be to write a header row and loop + through the items in a list, outputting one row for + each.

    +

    Here is a simple example where we first make a list of the multiples of 12 and then write a file that looks like this.

    +
    1,12
    +2,24
    +3,36
    +...
    + + +n = [0] * 12 +for i in range(1,13): + n[i-1] = i *12 +outfile = open("Multiples of 12", "w") +for j in range(0, len(n)): + outfile.write(str(j+1) + ',' + str(n[j])) + # +1 to j since the array starts at 0 and we start counting at 1 + outfile.write('\n') +outfile.close() + + +

    Here is a more complex example, where we a have a list of tuples, each representing one Olympian, a subset of the rows and columns from the file we have been reading from.

    + + +olympians = [("John Aalberg", 31, "Cross Country Skiing"), + ("Minna Maarit Aalto", 30, "Sailing"), + ("Win Valdemar Aaltonen", 54, "Art Competitions"), + ("Wakako Abe", 18, "Cycling")] + +outfile = open("reduced_olympics.csv", "w") +# output the header row +outfile.write('Name,Age,Sport') +outfile.write('\n') +# output each of the rows: +for olympian in olympians: + row_string = '{},{},{}'.format(olympian[0], olympian[1], olympian[2]) + outfile.write(row_string) + outfile.write('\n') +outfile.close() + + +

    There are a few things worth noting in the code above.

    +

    First, using .format() makes it really clear what we're doing when we create the variable row_string. We are making a comma separated set of values; the {} curly braces indicated where to substitute in the actual values. The equivalent string concatenation would be very hard to read. An alternative, also clear way to do it would be with the .join method: row_string = ','.join([olympian[0], str(olympian[1]), olympian[2]]).

    +

    Second, unlike the print statement, remember that the .write() method on a file object does not automatically insert a newline. Instead, we have to explicitly add the character \n at the end of each line.

    +

    Third, we have to explicitly refer to each of the elements of olympian when building the string to write. Note that just putting .format(olympian) wouldn't work because the interpreter would see only one value (a tuple) when it was expecting three values to try to substitute into the string template. Later in the book we will see that python provides an advanced technique for automatically unpacking the three values from the tuple, with .format(*olympian).

    +

    As described previously, if one or more columns contain text, and that text could contain commas, we need to do something + to distinguish a comma in the text from a comma that is separating different values (cells in the + table). If we want to enclose each value in double quotes, it can start to get a little tricky, because we will + need to have the double quote character inside the string output. But it is doable. Indeed, one + reason Python allows strings to be delimited with either single quotes or double quotes is so + that one can be used to delimit the string and the other can be a character in the string. If you get to the point where you need to quote all of the values, we recommend learning to use python's csv module.

    + + +olympians = [("John Aalberg", 31, "Cross Country Skiing, 15KM"), + ("Minna Maarit Aalto", 30, "Sailing"), + ("Win Valdemar Aaltonen", 54, "Art Competitions"), + ("Wakako Abe", 18, "Cycling")] + +outfile = open("reduced_olympics2.csv", "w") +# output the header row +outfile.write('"Name","Age","Sport"') +outfile.write('\n') +# output each of the rows: +for olympian in olympians: + row_string = '"{}", "{}", "{}"'.format(olympian[0], olympian[1], olympian[2]) + outfile.write(row_string) + outfile.write('\n') +outfile.close() + + +
    diff --git a/pretext/Files/WritingTextFiles.ptx b/pretext/Files/WritingTextFiles.ptx new file mode 100644 index 00000000..a7c44618 --- /dev/null +++ b/pretext/Files/WritingTextFiles.ptx @@ -0,0 +1,70 @@ + +
    + Writing Text Files +

    One of the most commonly performed data processing tasks is to read data from a file, + manipulate it in some way, and then write the resulting data out to a new data file to be used + for other purposes later. To accomplish this, the open function discussed above can also be + used to create a new file prepared for writing. Note in + that the only difference between opening a file for writing and opening a file for reading is + the use of the 'w' flag instead of the 'r' flag as the second parameter. When we open + a file for writing, a new, empty file with that name is created and made ready to accept our + data. If an existing file has the same name, its contents are overwritten. As before, the function returns a reference to the new file object.

    +

    shows one additional method on file objects that we have not used + thus far. The write method allows us to add data to a text file. Recall that text files + contain sequences of characters. We usually think of these character sequences as being the + lines of the file where each line ends with the newline \n character. Be very careful to + notice that the write method takes one parameter, a string. When invoked, the characters of + the string will be added to the end of the file. This means that it is the programmer's job to + include the newline characters as part of the string if desired.

    +

    Assume that we have been asked to provide a file consisting of all the squared numbers from 1 + to 12.

    +

    First, we will need to open the file. Afterwards, we will iterate through the numbers 1 through + 12, and square each one of them. This new number will need to be converted to a string, and + then it can be written into the file.

    +

    The program below solves part of the problem. We first want to make sure that we've written the + correct code to calculate the square of each number.

    + + +for number in range(1, 13): + square = number * number + print(square) + + +

    When we run this program, we see the lines of output on the screen. Once we are satisfied that + it is creating the appropriate output, the next step is to add the necessary pieces to produce + an output file and write the data lines to it. To start, we need to open a new output file by + calling the open function, outfile = open("squared_numbers.txt",'w'), using the 'w' + flag. We can choose any file name we like. If the file does not exist, it will be created. + However, if the file does exist, it will be reinitialized as empty and you will lose any + previous contents.

    +

    Once the file has been created, we just need to call the write method passing the string + that we wish to add to the file. In this case, the string is already being printed so we will + just change the print into a call to the write method. However, there is an additional + step to take, since the write method can only accept a string as input. We'll need to convert + the number to a string. Then, we just need to add one extra character to the string. The + newline character needs to be concatenated to the end of the line. The entire line now becomes + outfile.write(str(square)+ '\n'). The print statement automatically outputs a newline + character after whatever text it outputs, but the write method does not do that automatically. + We also need to close the file when we are done.

    +

    The complete program is shown below.

    + +

    As with file reading, for security reasons the runestone interactive textbook environment does not write files to the file system on your local computer. In an activecode window, we simulate writing to a file. The contents of the written file are shown and you can do a subsequent read of the contents of that filename. If you try to overwrite a file that's built in to the page, it may not let you; don't try to get too fancy with our file system simulator!

    +

    Below, we have printed the first 10 characters to the output window.

    +
    + + +filename = "squared_numbers.txt" +outfile = open(filename, "w") + +for number in range(1, 13): + square = number * number + outfile.write(str(square) + "\n") + +outfile.close() + +infile = open(filename, "r") +print(infile.read()[:10]) +infile.close() + + +
    diff --git a/pretext/Files/intro-WorkingwithDataFiles.ptx b/pretext/Files/intro-WorkingwithDataFiles.ptx new file mode 100644 index 00000000..785562d0 --- /dev/null +++ b/pretext/Files/intro-WorkingwithDataFiles.ptx @@ -0,0 +1,104 @@ + +
    + Introduction: Working with Data Files +
    diff --git a/pretext/Files/toctree.ptx b/pretext/Files/toctree.ptx new file mode 100644 index 00000000..0303f3d5 --- /dev/null +++ b/pretext/Files/toctree.ptx @@ -0,0 +1,19 @@ + + + Files + + + + + + + + + + + + + + + + diff --git a/pretext/FrontBackMatter/back_toc.ptx b/pretext/FrontBackMatter/back_toc.ptx new file mode 100644 index 00000000..ed94767d --- /dev/null +++ b/pretext/FrontBackMatter/back_toc.ptx @@ -0,0 +1,11 @@ + + + + Project List + + + + + + + diff --git a/pretext/FrontBackMatter/contrib.ptx b/pretext/FrontBackMatter/contrib.ptx new file mode 100644 index 00000000..7c501990 --- /dev/null +++ b/pretext/FrontBackMatter/contrib.ptx @@ -0,0 +1,255 @@ + +
    + Contributor List +

    To paraphrase the philosophy of the Free Software Foundation, this book is free + like free speech, but not necessarily free like free pizza. It came about + because of a collaboration that would not have been possible without the GNU + Free Documentation License. So we would like to thank the Free Software + Foundation for developing this license and, of course, making it available to + us.

    +

    We would also like to thank the more than 100 sharp-eyed and thoughtful readers + who have sent us suggestions and corrections over the past few years. In the + spirit of free software, we decided to express our gratitude in the form of a + contributor list. Unfortunately, this list is not complete, but we are doing + our best to keep it up to date. It was also getting too large to include + everyone who sends in a typo or two. You have our gratitude, and you have the + personal satisfaction of making a book you found useful better for you and + everyone else who uses it. New additions to the list for the 2nd edition will + be those who have made on-going contributions.

    +

    If you have a chance to look through the list, you should realize that each + person here has spared you and all subsequent readers from the confusion of a + technical error or a less-than-transparent explanation, just by sending us a + note.

    +

    Impossible as it may seem after so many corrections, there may still be errors + in this book. If you should stumble across one, we hope you will take a minute + to contact us. The email address is jeff@elkner.net + . Substantial changes made due to your suggestions will add you to the next + version of the contributor list (unless you ask to be omitted). Thank you!

    + + Second Edition +

    +

      +
    • +

      An email from Mike MacHenry set me straight on tail recursion. He not only + pointed out an error in the presentation, but suggested how to correct it.

      +
    • +
    • +

      It wasn't until 5th Grade student Owen Davies came to me in a Saturday + morning Python enrichment class and said he wanted to write the card game, + Gin Rummy, in Python that I finally knew what I wanted to use as the case + study for the object oriented programming chapters.

      +
    • +
    • +

      A special thanks to pioneering students in Jeff's Python Programming class + at GCTAA during the 2009-2010 school year: Safath + Ahmed, Howard Batiste, Louis Elkner-Alfaro, and Rachel Hancock. Your + continual and thoughtfull feedback led to changes in most of the chapters of + the book. You set the standard for the active and engaged learners that will + help make the new Governor's Academy what it is to become. Thanks to you + this is truly a student tested text.

      +
    • +
    • +

      Thanks in a similar vein to the students in Jeff's Computer Science + class at the HB-Woodlawn program during the 2007-2008 school year: James + Crowley, Joshua Eddy, Eric Larson, Brian McGrail, and Iliana Vazuka.

      +
    • +
    • +

      Ammar Nabulsi sent in numerous corrections from Chapters 1 and 2.

      +
    • +
    • +

      Aldric Giacomoni pointed out an error in our definition of the Fibonacci + sequence in Chapter 5.

      +
    • +
    • +

      Roger Sperberg sent in several spelling corrections and pointed out a twisted + piece of logic in Chapter 3.

      +
    • +
    • +

      Adele Goldberg sat down with Jeff at PyCon 2007 and gave him a list of + suggestions and corrections from throughout the book.

      +
    • +
    • +

      Ben Bruno sent in corrections for chapters 4, 5, 6, and 7.

      +
    • +
    • +

      Carl LaCombe pointed out that we incorrectly used the term commutative in + chapter 6 where symmetric was the correct term.

      +
    • +
    • +

      Alessandro Montanile sent in corrections for errors in the code examples and + text in chapters 3, 12, 15, 17, 18, 19, and 20.

      +
    • +
    • +

      Emanuele Rusconi found errors in chapters 4, 8, and 15.

      +
    • +
    • +

      Michael Vogt reported an indentation error in an example in chapter 6, and + sent in a suggestion for improving the clarity of the shell vs. script + section in chapter 1.

      +
    • +
    +

    +
    + + First Edition +

    +

      +
    • +

      Lloyd Hugh Allen sent in a correction to Section 8.4.

      +
    • +
    • +

      Yvon Boulianne sent in a correction of a semantic error in Chapter 5.

      +
    • +
    • +

      Fred Bremmer submitted a correction in Section 2.1.

      +
    • +
    • +

      Jonah Cohen wrote the Perl scripts to convert the LaTeX source for this book + into beautiful HTML.

      +
    • +
    • +

      Michael Conlon sent in a grammar correction in Chapter 2 and an improvement + in style in Chapter 1, and he initiated discussion on the technical aspects + of interpreters.

      +
    • +
    • +

      Benoit Girard sent in a correction to a humorous mistake in Section 5.6.

      +
    • +
    • +

      Courtney Gleason and Katherine Smith wrote horsebet.py, which was used as a + case study in an earlier version of the book. Their program can now be found + on the website.

      +
    • +
    • +

      Lee Harr submitted more corrections than we have room to list here, and + indeed he should be listed as one of the principal editors of the text.

      +
    • +
    • +

      James Kaylin is a student using the text. He has submitted numerous + corrections.

      +
    • +
    • +

      David Kershaw fixed the broken catTwice function in Section 3.10.

      +
    • +
    • +

      Eddie Lam has sent in numerous corrections to Chapters 1, 2, and 3. He also + fixed the Makefile so that it creates an index the first time it is run and + helped us set up a versioning scheme.

      +
    • +
    • +

      Man-Yong Lee sent in a correction to the example code in Section 2.4.

      +
    • +
    • +

      David Mayo pointed out that the word unconsciously in Chapter 1 needed to be + changed to subconsciously .

      +
    • +
    • +

      Chris McAloon sent in several corrections to Sections 3.9 and 3.10.

      +
    • +
    • +

      Matthew J. Moelter has been a long-time contributor who sent in numerous + corrections and suggestions to the book.

      +
    • +
    • +

      Simon Dicon Montford reported a missing function definition and several typos + in Chapter 3. He also found errors in the increment function in Chapter 13.

      +
    • +
    • +

      John Ouzts corrected the definition of return value in Chapter 3.

      +
    • +
    • +

      Kevin Parks sent in valuable comments and suggestions as to how to improve + the distribution of the book.

      +
    • +
    • +

      David Pool sent in a typo in the glossary of Chapter 1, as well as kind words + of encouragement.

      +
    • +
    • +

      Michael Schmitt sent in a correction to the chapter on files and + exceptions.

      +
    • +
    • +

      Robin Shaw pointed out an error in Section 13.1, where the printTime function + was used in an example without being defined.

      +
    • +
    • +

      Paul Sleigh found an error in Chapter 7 and a bug in Jonah Cohen's Perl + script that generates HTML from LaTeX.

      +
    • +
    • +

      Craig T. Snydal is testing the text in a course at Drew University. + He has contributed several valuable suggestions and corrections.

      +
    • +
    • +

      Ian Thomas and his students are using the text in a programming course. They + are the first ones to test the chapters in the latter half of the book, and + they have make numerous corrections and suggestions.

      +
    • +
    • +

      Keith Verheyden sent in a correction in Chapter 3.

      +
    • +
    • +

      Peter Winstanley let us know about a longstanding error in our Latin in + Chapter 3.

      +
    • +
    • +

      Chris Wrobel made corrections to the code in the chapter on file I/O and + exceptions.

      +
    • +
    • +

      Moshe Zadka has made invaluable contributions to this project. In addition to + writing the first draft of the chapter on Dictionaries, he provided continual + guidance in the early stages of the book.

      +
    • +
    • +

      Christoph Zwerschke sent several corrections and pedagogic + suggestions, and explained the difference between gleich and + selbe.

      +
    • +
    • +

      James Mayer sent us a whole slew of spelling and typographical + errors, including two in the contributor list.

      +
    • +
    • +

      Hayden McAfee caught a potentially confusing inconsistency between two + examples.

      +
    • +
    • +

      Angel Arnal is part of an international team of translators working on the + Spanish version of the text. He has also found several errors in the English + version.

      +
    • +
    • +

      Tauhidul Hoque and Lex Berezhny created the illustrations in Chapter 1 and + improved many of the other illustrations.

      +
    • +
    • +

      Dr. Michele Alzetta caught an error in Chapter 8 and sent some interesting + pedagogic comments and suggestions about Fibonacci and Old Maid.

      +
    • +
    • +

      Andy Mitchell caught a typo in Chapter 1 and a broken example in Chapter 2.

      +
    • +
    • +

      Kalin Harvey suggested a clarification in Chapter 7 and caught some typos.

      +
    • +
    • +

      Christopher P. Smith caught several typos and is helping us prepare to update + the book for Python 2.2.

      +
    • +
    • +

      David Hutchins caught a typo in the Foreword.

      +
    • +
    • +

      Gregor Lingl is teaching Python at a high school in Vienna, Austria. He is + working on a German translation of the book, and he caught a couple of bad + errors in Chapter 5.

      +
    • +
    • +

      Julie Peters caught a typo in the Preface.

      +
    • +
    +

    +
    +
    diff --git a/pretext/FrontBackMatter/copyright.ptx b/pretext/FrontBackMatter/copyright.ptx new file mode 100644 index 00000000..72070deb --- /dev/null +++ b/pretext/FrontBackMatter/copyright.ptx @@ -0,0 +1,13 @@ +
    + Copyright Notice + + Copyright (C) Brad Miller, Paul Resnick, Lauren Murphy, Jeffrey Elkner, Peter Wentworth, Allen B. Downey, Chris + Meyers, and Dario Mitchell. Permission is granted to copy, distribute + and/or modify this document under the terms of the GNU Free Documentation + License, Version 1.3 or any later version published by the Free Software + Foundation; with Invariant Sections being Forward, Prefaces, and + Contributor List, no Front-Cover Texts, and no Back-Cover Texts. A copy of + the license is included in the section entitled GNU Free Documentation License. + +
    + diff --git a/pretext/FrontBackMatter/fdl-1.3.ptx b/pretext/FrontBackMatter/fdl-1.3.ptx new file mode 100644 index 00000000..b6283dbd --- /dev/null +++ b/pretext/FrontBackMatter/fdl-1.3.ptx @@ -0,0 +1,384 @@ + +
    + GNU Free Documentation License +

    Version 1.3, 3 November 2008

    + + +

    Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, + Inc.

    +

    Everyone is permitted to copy and distribute verbatim copies of + this license document, but changing it is not allowed.

    + + 0. PREAMBLE +

    The purpose of this License is to make a manual, textbook, or other functional + and useful document free in the sense of freedom: to assure everyone the + effective freedom to copy and redistribute it, with or without modifying it, + either commercially or noncommercially. Secondarily, this License preserves for + the author and publisher a way to get credit for their work, while not being + considered responsible for modifications made by others.

    +

    This License is a kind of copyleft, which means that derivative works of the + document must themselves be free in the same sense. It complements the GNU + General Public License, which is a copyleft license designed for free software.

    +

    We have designed this License in order to use it for manuals for free software, + because free software needs free documentation: a free program should come with + manuals providing the same freedoms that the software does. But this License is + not limited to software manuals; it can be used for any textual work, + regardless of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is instruction or + reference.

    +
    + + 1. APPLICABILITY AND DEFINITIONS +

    This License applies to any manual or other work, in any medium, that contains + a notice placed by the copyright holder saying it can be distributed under the + terms of this License. Such a notice grants a world-wide, royalty-free license, + unlimited in duration, to use that work under the conditions stated herein. The + Document, below, refers to any such manual or work. Any member of the public + is a licensee, and is addressed as you. You accept the license if you copy, + modify or distribute the work in a way requiring permission under copyright + law.

    +

    A Modified Version of the Document means any work containing the Document or + a portion of it, either copied verbatim, or with modifications and/or + translated into another language.

    +

    A Secondary Section is a named appendix or a front-matter section of the + Document that deals exclusively with the relationship of the publishers or + authors of the Document to the Document's overall subject (or to related + matters) and contains nothing that could fall directly within that overall + subject. (Thus, if the Document is in part a textbook of mathematics, a + Secondary Section may not explain any mathematics.) The relationship could be a + matter of historical connection with the subject or with related matters, or of + legal, commercial, philosophical, ethical or political position regarding them.

    +

    The Invariant Sections are certain Secondary Sections whose titles are + designated, as being those of Invariant Sections, in the notice that says that + the Document is released under this License. If a section does not fit the + above definition of Secondary then it is not allowed to be designated as + Invariant. The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none.

    +

    The Cover Texts are certain short passages of text that are listed, as + Front-Cover Texts or Back-Cover Texts, in the notice that says that the + Document is released under this License. A Front-Cover Text may be at most 5 + words, and a Back-Cover Text may be at most 25 words.

    +

    A Transparent copy of the Document means a machine-readable copy, represented + in a format whose specification is available to the general public, that is + suitable for revising the document straightforwardly with generic text editors + or (for images composed of pixels) generic paint programs or (for drawings) + some widely available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats suitable for + input to text formatters. A copy made in an otherwise Transparent file format + whose markup, or absence of markup, has been arranged to thwart or discourage + subsequent modification by readers is not Transparent. An image format is not + Transparent if used for any substantial amount of text. A copy that is not + Transparent is called Opaque.

    +

    Examples of suitable formats for Transparent copies include plain ASCII without + markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly + available DTD, and standard-conforming simple HTML, PostScript or PDF designed + for human modification. Examples of transparent image formats include PNG, XCF + and JPG. Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which the DTD + and/or processing tools are not generally available, and the machine-generated + HTML, PostScript or PDF produced by some word processors for output purposes + only.

    +

    The Title Page means, for a printed book, the title page itself, plus such + following pages as are needed to hold, legibly, the material this License + requires to appear in the title page. For works in formats which do not have + any title page as such, Title Page means the text near the most prominent + appearance of the work's title, preceding the beginning of the body of the + text.

    +

    The publisher means any person or entity that distributes copies of the + Document to the public.

    +

    A section Entitled XYZ means a named subunit of the Document whose title + either is precisely XYZ or contains XYZ in parentheses following text that + translates XYZ in another language. (Here XYZ stands for a specific section + name mentioned below, such as Acknowledgements, Dedications, + Endorsements, or History.) To Preserve the Title of such a section when + you modify the Document means that it remains a section Entitled XYZ + according to this definition.

    +

    The Document may include Warranty Disclaimers next to the notice which states + that this License applies to the Document. These Warranty Disclaimers are + considered to be included by reference in this License, but only as regards + disclaiming warranties: any other implication that these Warranty Disclaimers + may have is void and has no effect on the meaning of this License.

    +
    + + 2. VERBATIM COPYING +

    You may copy and distribute the Document in any medium, either commercially or + noncommercially, provided that this License, the copyright notices, and the + license notice saying this License applies to the Document are reproduced in + all copies, and that you add no other conditions whatsoever to those of this + License. You may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, you may + accept compensation in exchange for copies. If you distribute a large enough + number of copies you must also follow the conditions in section 3.

    +

    You may also lend copies, under the same conditions stated above, and you may + publicly display copies.

    +
    + + 3. COPYING IN QUANTITY +

    If you publish printed copies (or copies in media that commonly have printed + covers) of the Document, numbering more than 100, and the Document's license + notice requires Cover Texts, you must enclose the copies in covers that carry, + clearly and legibly, all these Cover Texts: Front-Cover Texts on the front + cover, and Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The front cover must + present the full title with all words of the title equally prominent and + visible. You may add other material on the covers in addition. Copying with + changes limited to the covers, as long as they preserve the title of the + Document and satisfy these conditions, can be treated as verbatim copying in + other respects.

    +

    If the required texts for either cover are too voluminous to fit legibly, you + should put the first ones listed (as many as fit reasonably) on the actual + cover, and continue the rest onto adjacent pages.

    +

    If you publish or distribute Opaque copies of the Document numbering more than + 100, you must either include a machine-readable Transparent copy along with + each Opaque copy, or state in or with each Opaque copy a computer-network + location from which the general network-using public has access to download + using public-standard network protocols a complete Transparent copy of the + Document, free of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque copies in + quantity, to ensure that this Transparent copy will remain thus accessible at + the stated location until at least one year after the last time you distribute + an Opaque copy (directly or through your agents or retailers) of that edition + to the public.

    +

    It is requested, but not required, that you contact the authors of the Document + well before redistributing any large number of copies, to give them a chance to + provide you with an updated version of the Document.

    +
    + + 4. MODIFICATIONS +

    You may copy and distribute a Modified Version of the Document under the + conditions of sections 2 and 3 above, provided that you release the Modified + Version under precisely this License, with the Modified Version filling the + role of the Document, thus licensing distribution and modification of the + Modified Version to whoever possesses a copy of it. In addition, you must do + these things in the Modified Version:

    +

    +

      +
    • +

      A. Use in the Title Page (and on the covers, if any) a title distinct from + that of the Document, and from those of previous versions (which should, if + there were any, be listed in the History section of the Document). You may + use the same title as a previous version if the original publisher of that + version gives permission.

      +
    • +
    • +

      B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified Version, + together with at least five of the principal authors of the Document (all of + its principal authors, if it has fewer than five), unless they release you + from this requirement.

      +
    • +
    • +

      C. State on the Title page the name of the publisher of the Modified Version, + as the publisher.

      +
    • +
    • +

      D. Preserve all the copyright notices of the Document.

      +
    • +
    • +

      E. Add an appropriate copyright notice for your modifications adjacent to the + other copyright notices.

      +
    • +
    • +

      F. Include, immediately after the copyright notices, a license notice giving + the public permission to use the Modified Version under the terms of this + License, in the form shown in the Addendum below.

      +
    • +
    • +

      G. Preserve in that license notice the full lists of Invariant Sections and + required Cover Texts given in the Document's license notice.

      +
    • +
    • +

      H. Include an unaltered copy of this License.

      +
    • +
    • +

      I. Preserve the section Entitled History, Preserve its Title, and add to it + an item stating at least the title, year, new authors, and publisher of the + Modified Version as given on the Title Page. If there is no section Entitled + History in the Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add an item + describing the Modified Version as stated in the previous sentence.

      +
    • +
    • +

      J. Preserve the network location, if any, given in the Document for public + access to a Transparent copy of the Document, and likewise the network + locations given in the Document for previous versions it was based on. These + may be placed in the History section. You may omit a network location for a + work that was published at least four years before the Document itself, or if + the original publisher of the version it refers to gives permission.

      +
    • +
    • +

      K. For any section Entitled Acknowledgements or Dedications, Preserve the + Title of the section, and preserve in the section all the substance and tone + of each of the contributor acknowledgements and/or dedications given therein.

      +
    • +
    • +

      L. Preserve all the Invariant Sections of the Document, unaltered in their + text and in their titles. Section numbers or the equivalent are not + considered part of the section titles.

      +
    • +
    • +

      M. Delete any section Entitled Endorsements. Such a section may not be + included in the Modified Version.

      +
    • +
    • +

      N. Do not retitle any existing section to be Entitled Endorsements or to + conflict in title with any Invariant Section.

      +
    • +
    • +

      O. Preserve any Warranty Disclaimers.

      +
    • +
    +

    +

    If the Modified Version includes new front-matter sections or appendices that + qualify as Secondary Sections and contain no material copied from the Document, + you may at your option designate some or all of these sections as invariant. To + do this, add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any other section + titles.

    +

    You may add a section Entitled Endorsements, provided it contains nothing but + endorsements of your Modified Version by various parties—for example, + statements of peer review or that the text has been approved by an organization + as the authoritative definition of a standard.

    +

    You may add a passage of up to five words as a Front-Cover Text, and a passage + of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts + in the Modified Version. Only one passage of Front-Cover Text and one of + Back-Cover Text may be added by (or through arrangements made by) any one + entity. If the Document already includes a cover text for the same cover, + previously added by you or by arrangement made by the same entity you are + acting on behalf of, you may not add another; but you may replace the old one, + on explicit permission from the previous publisher that added the old one.

    +

    The author(s) and publisher(s) of the Document do not by this License give + permission to use their names for publicity for or to assert or imply + endorsement of any Modified Version.

    +
    + + 5. COMBINING DOCUMENTS +

    You may combine the Document with other documents released under this License, + under the terms defined in section 4 above for modified versions, provided that + you include in the combination all of the Invariant Sections of all of the + original documents, unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all their Warranty + Disclaimers.

    +

    The combined work need only contain one copy of this License, and multiple + identical Invariant Sections may be replaced with a single copy. If there are + multiple Invariant Sections with the same name but different contents, make the + title of each such section unique by adding at the end of it, in parentheses, + the name of the original author or publisher of that section if known, or else + a unique number. Make the same adjustment to the section titles in the list of + Invariant Sections in the license notice of the combined work.

    +

    In the combination, you must combine any sections Entitled History in the + various original documents, forming one section Entitled History; likewise + combine any sections Entitled Acknowledgements, and any sections Entitled + Dedications. You must delete all sections Entitled Endorsements.

    +
    + + 6. COLLECTIONS OF DOCUMENTS +

    You may make a collection consisting of the Document and other documents + released under this License, and replace the individual copies of this License + in the various documents with a single copy that is included in the collection, + provided that you follow the rules of this License for verbatim copying of each + of the documents in all other respects.

    +

    You may extract a single document from such a collection, and distribute it + individually under this License, provided you insert a copy of this License + into the extracted document, and follow this License in all other respects + regarding verbatim copying of that document.

    +
    + + 7. AGGREGATION WITH INDEPENDENT WORKS +

    A compilation of the Document or its derivatives with other separate and + independent documents or works, in or on a volume of a storage or distribution + medium, is called an aggregate if the copyright resulting from the + compilation is not used to limit the legal rights of the compilation's users + beyond what the individual works permit. When the Document is included in an + aggregate, this License does not apply to the other works in the aggregate + which are not themselves derivative works of the Document.

    +

    If the Cover Text requirement of section 3 is applicable to these copies of the + Document, then if the Document is less than one half of the entire aggregate, + the Document's Cover Texts may be placed on covers that bracket the Document + within the aggregate, or the electronic equivalent of covers if the Document is + in electronic form. Otherwise they must appear on printed covers that bracket + the whole aggregate.

    +
    + + 8. TRANSLATION +

    Translation is considered a kind of modification, so you may distribute + translations of the Document under the terms of section 4. Replacing Invariant + Sections with translations requires special permission from their copyright + holders, but you may include translations of some or all Invariant Sections in + addition to the original versions of these Invariant Sections. You may include + a translation of this License, and all the license notices in the Document, and + any Warranty Disclaimers, provided that you also include the original English + version of this License and the original versions of those notices and + disclaimers. In case of a disagreement between the translation and the original + version of this License or a notice or disclaimer, the original version will + prevail.

    +

    If a section in the Document is Entitled Acknowledgements, Dedications, or + History, the requirement (section 4) to Preserve its Title (section 1) will + typically require changing the actual title.

    +
    + + 9. TERMINATION +

    You may not copy, modify, sublicense, or distribute the Document except as + expressly provided under this License. Any attempt otherwise to copy, modify, + sublicense, or distribute it is void, and will automatically terminate your + rights under this License.

    +

    However, if you cease all violation of this License, then your license from a + particular copyright holder is reinstated (a) provisionally, unless and until + the copyright holder explicitly and finally terminates your license, and (b) + permanently, if the copyright holder fails to notify you of the violation by + some reasonable means prior to 60 days after the cessation.

    +

    Moreover, your license from a particular copyright holder is reinstated + permanently if the copyright holder notifies you of the violation by some + reasonable means, this is the first time you have received notice of violation + of this License (for any work) from that copyright holder, and you cure the + violation prior to 30 days after your receipt of the notice.

    +

    Termination of your rights under this section does not terminate the licenses + of parties who have received copies or rights from you under this License. If + your rights have been terminated and not permanently reinstated, receipt of a + copy of some or all of the same material does not give you any rights to use + it.

    +
    + + 10. FUTURE REVISIONS OF THIS LICENSE +

    The Free Software Foundation may publish new, revised versions of the GNU Free + Documentation License from time to time. Such new versions will be similar in + spirit to the present version, but may differ in detail to address new problems + or concerns. See http://www.gnu.org/copyleft/.

    +

    Each version of the License is given a distinguishing version number. If the + Document specifies that a particular numbered version of this License or any + later version applies to it, you have the option of following the terms and + conditions either of that specified version or of any later version that has + been published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may choose any + version ever published (not as a draft) by the Free Software Foundation. If the + Document specifies that a proxy can decide which future versions of this + License can be used, that proxy's public statement of acceptance of a version + permanently authorizes you to choose that version for the Document.

    +
    + + 11. RELICENSING +

    Massive Multiauthor Collaboration Site (or MMC Site) means any World Wide + Web server that publishes copyrightable works and also provides prominent + facilities for anybody to edit those works. A public wiki that anybody can edit + is an example of such a server. A Massive Multiauthor Collaboration (or + MMC) contained in the site means any set of copyrightable works thus + published on the MMC site.

    +

    CC-BY-SA means the Creative Commons Attribution-Share Alike 3.0 license + published by Creative Commons Corporation, a not-for-profit corporation with a + principal place of business in San Francisco, California, as well as future + copyleft versions of that license published by that same organization.

    +

    Incorporate means to publish or republish a Document, in whole or in part, as + part of another Document.

    +

    An MMC is eligible for relicensing if it is licensed under this License, and + if all works that were first published under this License somewhere other than + this MMC, and subsequently incorporated in whole or in part into the MMC, (1) + had no cover texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008.

    +

    The operator of an MMC Site may republish an MMC contained in the site under + CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC + is eligible for relicensing.

    +
    +
    diff --git a/pretext/FrontBackMatter/foreword.ptx b/pretext/FrontBackMatter/foreword.ptx new file mode 100644 index 00000000..476b4ca5 --- /dev/null +++ b/pretext/FrontBackMatter/foreword.ptx @@ -0,0 +1,68 @@ + +
    + Foreword +

    By David Beazley

    +

    As an educator, researcher, and book author, I am delighted to see the + completion of this book. Python is a fun and extremely easy-to-use programming + language that has steadily gained in popularity over the last few years. + Developed over ten years ago by Guido van Rossum, Python's simple syntax and + overall feel is largely derived from ABC, a teaching language that was + developed in the 1980's. However, Python was also created to solve real + problems and it borrows a wide variety of features from programming languages + such as C++, Java, Modula-3, and Scheme. Because of this, one of Python's most + remarkable features is its broad appeal to professional software developers, + scientists, researchers, artists, and educators.

    +

    Despite Python's appeal to many different communities, you may still wonder why + Python? or why teach programming with Python? Answering these questions is no + simple task—especially when popular opinion is on the side of more + masochistic alternatives such as C++ and Java. However, I think the most + direct answer is that programming in Python is simply a lot of fun and more + productive.

    +

    When I teach computer science courses, I want to cover important concepts in + addition to making the material interesting and engaging to students. + Unfortunately, there is a tendency for introductory programming courses to + focus far too much attention on mathematical abstraction and for students to + become frustrated with annoying problems related to low-level details of + syntax, compilation, and the enforcement of seemingly arcane rules. Although + such abstraction and formalism is important to professional software engineers + and students who plan to continue their study of computer science, taking such + an approach in an introductory course mostly succeeds in making computer + science boring. When I teach a course, I don't want to have a room of + uninspired students. I would much rather see them trying to solve interesting + problems by exploring different ideas, taking unconventional approaches, + breaking the rules, and learning from their mistakes. In doing so, I don't want + to waste half of the semester trying to sort out obscure syntax problems, + unintelligible compiler error messages, or the several hundred ways that a + program might generate a general protection fault.

    +

    One of the reasons why I like Python is that it provides a really nice balance + between the practical and the conceptual. Since Python is interpreted, + beginners can pick up the language and start doing neat things almost + immediately without getting lost in the problems of compilation and linking. + Furthermore, Python comes with a large library of modules that can be used to + do all sorts of tasks ranging from web-programming to graphics. Having such a + practical focus is a great way to engage students and it allows them to + complete significant projects. However, Python can also serve as an excellent + foundation for introducing important computer science concepts. Since Python + fully supports procedures and classes, students can be gradually introduced to + topics such as procedural abstraction, data structures, and object-oriented + programming — all of which are applicable to later courses on Java or C++. + Python even borrows a number of features from functional programming languages + and can be used to introduce concepts that would be covered in more detail in + courses on Scheme and Lisp.

    +

    In reading Jeffrey's preface, I am struck by his comments that Python allowed + him to see a higher level of success and a lower level of frustration and that + he was able to move faster with better results. Although these comments refer + to his introductory course, I sometimes use Python for these exact same reasons + in advanced graduate level computer science courses at the University of + Chicago. In these courses, I am constantly faced with the daunting task of + covering a lot of difficult course material in a blistering nine week quarter. + Although it is certainly possible for me to inflict a lot of pain and suffering + by using a language like C++, I have often found this approach to be + counterproductive—especially when the course is about a topic unrelated to + just programming. I find that using Python allows me to better focus on the + actual topic at hand while allowing students to complete substantial class + projects.

    +

    Although Python is still a young and evolving language, I believe that it has a + bright future in education. This book is an important step in that direction. + David Beazley University of Chicago Author of the Python Essential Reference

    +
    diff --git a/pretext/FrontBackMatter/front_toc.ptx b/pretext/FrontBackMatter/front_toc.ptx new file mode 100644 index 00000000..b102fdaa --- /dev/null +++ b/pretext/FrontBackMatter/front_toc.ptx @@ -0,0 +1,20 @@ + + + + + + Brad Miller + + + + Paul Resnick + + + + + + + + + + diff --git a/pretext/FrontBackMatter/preface.ptx b/pretext/FrontBackMatter/preface.ptx new file mode 100644 index 00000000..f2a78ec5 --- /dev/null +++ b/pretext/FrontBackMatter/preface.ptx @@ -0,0 +1,56 @@ + +
    + Preface +
    diff --git a/pretext/Functions/Afunctionthataccumulates.ptx b/pretext/Functions/Afunctionthataccumulates.ptx new file mode 100644 index 00000000..9b72fd3b --- /dev/null +++ b/pretext/Functions/Afunctionthataccumulates.ptx @@ -0,0 +1,96 @@ + +
    + A function that accumulates +

    We have used the len function a lot already. If it weren't part of python, our lives as programmers would have been + a lot harder.

    +

    Well, actually, not that much harder. Now that we know how to define functions, we could define len ourselves if it + did not exist. Previously, we have used the accumlator pattern to count the number of lines in a file. Let's use that + same idea and just wrap it in a function definition. We'll call it mylen to distinguish it from the real len + which already exists. We actually could call it len, but that wouldn't be a very good idea, because it would replace + the original len function, and our implementation may not be a very good one.

    + + +def mylen(seq): + c = 0 # initialize count variable to 0 + for _ in seq: + c = c + 1 # increment the counter for each item in seq + return c + +print(mylen("hello")) +print(mylen([1, 2, 7])) + + + + +

    Rearrange the code statements to match the activecode window above. (This is an exercise in noticing where the indenting and outdenting happens, and where the return statement goes.)

    +
    + + + def mylen(x): + + + c = 0 # initialize count variable to 0 + + + for y in x: + + + c = c + 1 # increment the counter for each item in x + + + return c + + + print(mylen("hello")) + print(mylen([1, 2, 7])) + + +
    +

    + Check your Understanding +

    + + +

    1. Write a function named total that takes a list of integers as input, and returns the total value of all those integers added together.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(total([1, 2, 3, 4, 5]), 15, "Testing the total function on input [1, 2, 3, 4, 5].") + self.assertEqual(total([0, 0, 0, 0]), 0, "Testing the total function on input [0, 0, 0, 0].") + self.assertEqual(total([]), 0, "Testing the total function on input [].") + self.assertEqual(total([2]), 2, "Testing the total function on input [2].") + +myTests().main() + + +
    + + +

    2. Write a function called count that takes a list of numbers as input and returns a count of the number of elements in the list.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(count([]), 0, "Testing the function count with input []") + self.assertEqual(count([1, 5, 9, -2, 9, 23]), 6, "Testing the function count with input [1, 5, 9, -2, 9, 23]") + +myTests().main() + + +
    +
    diff --git a/pretext/Functions/ChapterAssessment.ptx b/pretext/Functions/ChapterAssessment.ptx new file mode 100644 index 00000000..d8b75341 --- /dev/null +++ b/pretext/Functions/ChapterAssessment.ptx @@ -0,0 +1,137 @@ + +
    + Chapter Assessment + + +

    Write a function called int_return that takes an integer as input and returns the same integer.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(int_return(10), 10, "Testing that function int_return(10) returns 10") + +myTests().main() + + +
    + + +

    Write a function called add that takes any number as its input and returns that sum with 2 added.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(add(-2), 0, "Testing that add(-2) returns 0") + self.assertEqual(add(6), 8, "Testing that add(6) returns 8") + self.assertEqual(add(4), 6, "Testing that add(4) returns 6") + +myTests().main() + + +
    + + +

    Write a function called change that takes any string, adds Nice to meet you! to the end of the argument given, and returns that new string.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(change("I'm Bob. "), "I'm Bob. Nice to meet you!", "Tests that change('I'm Bob. '') returns 'I'm Bob. Nice to meet you!'") + self.assertEqual(change(""), "Nice to meet you!", "Tests that change() returns 'Nice to meet you!'") + +myTests().main() + + +
    + + +

    Write a function, accum, that takes a list of integers as input and returns the sum of those integers.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFourA(self): + self.assertEqual(accum([5]), 5, "Tests that accum([5]) returns 5") + self.assertEqual(accum([]), 0, "Tests that accum([]) returns 0") + self.assertEqual(accum([2,4,6,8]), 20, "Tests that accum([2,4,6,8]) returns 20") + +myTests().main() + + +
    + + +

    Write a function, length, that takes in a list as the input. If the length of the list is greater than or equal to 5, return Longer than 5. If the length is less than 5, return Less than 5.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(length([]), "Less than 5", "Tests that length([]) returns 'Less than 5'") + self.assertEqual(length([2, 2]), "Less than 5", "Tests that length([2, 2]) returns 'Less than 5'") + self.assertEqual(length([4, 4, 4, 3, 5, 6, 7, 8, 9]), "Longer than 5", "Tests that length([4, 4, 4, 3, 5, 6, 7, 8, 9]) returns 'Longer than 5'") + self.assertEqual(length([1, 1, 1, 1, 1]), "Longer than 5", "Tests that length([1, 1, 1, 1, 1]) returns 'Longer than 5'") + +myTests().main() + + +
    + + +

    You will need to write two functions for this problem. The first function, divide that takes in any number and returns that same number divided by 2. The second function called sum should take any number, divide it by 2, and add 6. It should return this new number. You should call the divide function within the sum function. Do not worry about decimals.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testSixA(self): + self.assertEqual(divide(4), 2, "Tests that divide(4) returns 2") + def testSixB(self): + self.assertEqual(sum(4), 8, "Tests that sum(4) returns 8") + self.assertEqual(sum(2), 7, "Tests that sum(2) returns 7") + self.assertEqual(sum(-6), 3, "Tests that sum(-6) returns 3") + self.assertEqual(sum(0), 6, "Tests that sum(0) returns 6") + +myTests().main() + + +
    +
    diff --git a/pretext/Functions/DecodingaFunction.ptx b/pretext/Functions/DecodingaFunction.ptx new file mode 100644 index 00000000..7576fc73 --- /dev/null +++ b/pretext/Functions/DecodingaFunction.ptx @@ -0,0 +1,315 @@ + +
    + 👩‍💻 Decoding a Function +

    In general, when you see a function definition you will try figure out what the function does, but, + unless you are writing the function, you won't care how it does it.

    +

    For example, here is a summary of some functions we have seen already.

    +

    +

    +

    +

    Sometimes, you will be presented with a function definition whose operation is not so neatly summarized + as above. Sometimes you will need to look at the code, either the function definition or code that + invokes the function, in order to figure out what it does.

    +

    To build your understanding of any function, you should aim to answer the following questions:

    +

    +

      +
    1. +

      How many parameters does it have?

      +
    2. +
    3. +

      What is the type of values that will be passed when the function is + invoked?

      +
    4. +
    5. +

      What is the type of the return value that the function produces when it + executes?

      +
    6. +
    +

    +

    If you try to make use of functions, ones you write or that others write, without being able to answer + these questions, you will find that your debugging sessions are long and painful.

    +

    The first question is always easy to answer. Look at the line with the function definition, look inside + the parentheses, and count how many variable names there are.

    +

    The second and third questions are not always so easy to answer. In Python, unlike some other programming + languages, variables are not declared to have fixed types, and the same holds true for the variable names + that appear as formal parameters of functions. You have to figure it out from context.

    +

    To figure out the types of values that a function expects to receive as parameters, you can look at the + function invocations or you can look at the operations that are performed on the parameters inside the function.

    +

    Here are some clues that can help you determine the type of object associated with any variable, including a + function parameter. If you see…

    +

    +

    +

    +

    + Check your understanding: decode this function definition +

    + + +

    How many parameters does function cyu3 take?

    + + +def cyu3(x, y, z): + if x - y > 0: + return y -2 + else: + z.append(y) + return x + 3 + + +
    + + + +

    0

    +
    + +

    Count the number of variable names inside the parenetheses on line 1.

    +
    +
    + + +

    1

    +
    + +

    Count the number of variable names inside the parenetheses on line 1.

    +
    +
    + + +

    2

    +
    + +

    Count the number of variable names inside the parenetheses on line 1.

    +
    +
    + + +

    3

    +
    + +

    x, y, and z.

    +
    +
    + + +

    Can't tell

    +
    + +

    You can tell by looking inside the parentheses on line 1. Each variable name is separated by a comma.

    +
    +
    +
    +
    + + +

    What are the possible types of variables x and y?

    + + +def cyu3(x, y, z): + if x - y > 0: + return y -2 + else: + z.append(y) + return x + 3 + + +
    + + + +

    integer

    +
    + +

    x - y, y-2, and x+3 can all be performed on integers.

    +
    +
    + + +

    float

    +
    + +

    x - y, y-2, and x+3 can all be performed on floats.

    +
    +
    + + +

    list

    +
    + +

    x - y, y-2, and x+3 can't be performed on lists.

    +
    +
    + + +

    string

    +
    + +

    x - y and y-2 can't be performed on strings.

    +
    +
    + + +

    Can't tell

    +
    + +

    You can tell from some of the operations that are performed on them.

    +
    +
    +
    +
    + + +

    What are the possible types of variable z?

    + + +def cyu3(x, y, z): + if x - y > 0: + return y -2 + else: + z.append(y) + return x + 3 + + +
    + + + +

    integer

    +
    + +

    append can't be performed on integers.

    +
    +
    + + +

    float

    +
    + +

    append can't be performed on floats.

    +
    +
    + + +

    list

    +
    + +

    append can be performed on lists.

    +
    +
    + + +

    string

    +
    + +

    append can't be performed on strings.

    +
    +
    + + +

    Can't tell

    +
    + +

    You can tell from some of the operations that are performed on it.

    +
    +
    +
    +
    + + +

    What are the possible types of the return value from cyu3?

    + + +def cyu3(x, y, z): + if x - y > 0: + return y -2 + else: + z.append(y) + return x + 3 + + +
    + + + +

    integer

    +
    + +

    y-2 or x+3 could produce an integer.

    +
    +
    + + +

    float

    +
    + +

    y-2 or x+3 could produce a float.

    +
    +
    + + +

    list

    +
    + +

    y-2 or x+3 can't produce a list.

    +
    +
    + + +

    string

    +
    + +

    neither y-2 or x+3 could produce a string.

    +
    +
    + + +

    Can't tell

    +
    + +

    You can tell from the expressions that follow the word return.

    +
    +
    +
    +
    +
    diff --git a/pretext/Functions/Exercises.ptx b/pretext/Functions/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Functions/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Functions/FlowofExecutionSummary.ptx b/pretext/Functions/FlowofExecutionSummary.ptx new file mode 100644 index 00000000..e1ef7551 --- /dev/null +++ b/pretext/Functions/FlowofExecutionSummary.ptx @@ -0,0 +1,77 @@ + +

    + Flow of Execution Summary +

    When you are working with functions it is really important to know the order in which statements are executed. This is + called the flow of execution and we've already talked about it a number of times in this chapter.

    +

    Execution always begins at the first statement of the program. Statements are executed one at a time, in order, from + top to bottom. Function definitions do not alter the flow of execution of the program, but remember that statements + inside the function are not executed until the function is called. Function calls are like a detour in the flow of + execution. Instead of going to the next statement, the flow jumps to the first line of the called function, executes + all the statements there, and then comes back to pick up where it left off.

    +

    That sounds simple enough, until you remember that one function can call another. While in the middle of one function, + the program might have to execute the statements in another function. But while executing that new function, the + program might have to execute yet another function!

    +

    Fortunately, the Python interperter is adept at keeping track of where it is, so each time a function completes, the + program picks up where it left off in the function that called it. When it gets to the end of the program, it terminates.

    +

    What does all that mean for us when we try to understand a program? Don't read from top to bottom. Instead, follow the + flow of execution. This means that you will read the def statements as you are scanning from top to bottom, but you + should skip the body of the function until you reach a point where that function is called.

    +

    + Check your understanding +

    + + +

    Consider the following Python code. Note that line numbers are included on the left.

    + + +def pow(b, p): + y = b ** p + return y + +def square(x): + a = pow(x, 2) + return a + +n = 5 +result = square(n) +print(result) + + +

    What does this function print?

    +
    + + + +

    25

    +
    + +

    The function square returns the square of its input (via a call to pow).

    +
    +
    + + +

    5

    +
    + +

    What is printed is the output of the square function. 5 is the input to the square function.

    +
    +
    + + +

    125

    +
    + +

    Notice that pow is called from within square with a base (b) of 5 and a power (p) of two.

    +
    +
    + + +

    32

    +
    + +

    Notice that pow is called from within square with a base (b) of 5 and a power (p) of two.

    +
    +
    +
    +
    +
    diff --git a/pretext/Functions/FunctionDefinitions.ptx b/pretext/Functions/FunctionDefinitions.ptx new file mode 100644 index 00000000..bc8ad637 --- /dev/null +++ b/pretext/Functions/FunctionDefinitions.ptx @@ -0,0 +1,85 @@ + +
    + Function Definition +

    The syntax for creating a named function, a function definition, is:

    + + +def name( parameters ): + statements + + +

    You can make up any names you want for the functions you create, except that you can't use a name that is a Python + keyword, and the names must follow the rules for legal identifiers that were given previously. The parameters specify + what information, if any, you have to provide in order to use the new function. Another way to say this is that the + parameters specify what the function needs to do its work.

    +

    There can be any number of statements inside the function, but they have to be indented from the def. In the + examples in this book, we will use the standard indentation of four spaces. Function definitions are the third of + several compound statements we will see, all of which have the same pattern:

    +

    +

      +
    1. +

      A header line which begins with a keyword and ends with a colon.

      +
    2. +
    3. +

      A body consisting of one or more Python statements, each + indented the same amount – 4 spaces is the Python standard – from + the header line.

      +
    4. +
    +

    +

    We've already seen the for statement which has the same structure, with an indented block of code, and the + if, elif, and else statements that do so as well.

    +

    In a function definition, the keyword in the header is def, which is followed by the name of the function and + some parameter names enclosed in parentheses. The parameter list may be empty, or it may contain any number of + parameters separated from one another by commas. In either case, the parentheses are required.

    +

    We will come back to the parameters in a little while, but first let's see what happens when a function is executed, + using a function without any parameters to illustrate.

    +

    Here's the definition of a simple function, hello.

    + + +def hello(): + """This function says hello and greets you""" + print("Hello") + print("Glad to meet you") + + + + docstrings +

    If the first thing after the function header is a string (some tools insist that + it must be a triple-quoted string), it is called a docstring + and gets special treatment in Python and in some of the programming tools.

    +

    Another way to retrieve this information is to use the interactive + interpreter, and enter the expression <function_name>.__doc__, which will retrieve the + docstring for the function. So the string you write as documentation at the start of a function is + retrievable by python tools at runtime. This is different from comments in your code, + which are completely eliminated when the program is parsed.

    +

    By convention, Python programmers use docstrings for the key documentation of + their functions.

    +
    +

    We can apply functions to the turtle drawings we've done in the past as well.

    + + +import turtle + +def drawSquare(t, sz): + """Make turtle t draw a square of with side sz.""" + + for i in range(4): + t.forward(sz) + t.left(90) + + +wn = turtle.Screen() # Set up the window and its attributes +wn.bgcolor("lightgreen") + +alex = turtle.Turtle() # create alex +drawSquare(alex, 50) # Call the function to draw the square passing the actual turtle and the actual side size + +wn.exitonclick() + + +

    This function is named drawSquare. It has two parameters — one to tell the function which turtle to move around + and the other to tell it the size of the square we want drawn. In the function definition they are called t and + sz respectively. Make sure you know where the body of the function ends — it depends on the indentation and the + blank lines don't count for this purpose!

    +
    diff --git a/pretext/Functions/FunctionInvocation.ptx b/pretext/Functions/FunctionInvocation.ptx new file mode 100644 index 00000000..e811350e --- /dev/null +++ b/pretext/Functions/FunctionInvocation.ptx @@ -0,0 +1,229 @@ + +
    + Function Invocation +

    Defining a new function does not make the function run. + To execute the function, we need a function call. This is also known as a function invocation.

    + +

    This section is a review of something we learned in the beginning of the textbook.

    +
    +

    The way to invoke a function is to refer to it by name, followed by parentheses. Since there are no parameters for + the function hello, we won't need to put anything inside the parentheses when we call it. Once we've defined a + function, we can call it as often as we like and its statements will be executed each time we call it.

    + + +def hello(): + print("Hello") + print("Glad to meet you") + +print(type(hello)) +print(type("hello")) + +hello() +print("Hey, that just printed two lines with one line of code!") +hello() # do it again, just because we can... + + +

    Let's take a closer look at what happens when you define a function and when you execute the function. + Try stepping through the code above.

    +

    First, note that in Step 1, when it executes line 1, it does not execute lines 2 and 3. Instead, as you can see in + blue Global variables area, it creates a variable named hello whose value is a python function object. In the + diagram that object is labeled hello() with a notation above it that it is a function.

    +

    At Step 2, the next line of code to execute is line 5. Just to emphasize that hello is a variable like any other, and + that functions are python objects like any other, just of a particular type, line 5 prints out the type of the object + referred to by the variable hello. It's type is officially ‘function'.

    +

    Line 6 is just there to remind you of the difference between referring to the + variable name (function name) hello and referring to the string hello.

    +

    At Step 4 we get to line 8, which has an invocation of the function. The way function invocation works is that the + code block inside the function definition is executed in the usual way, but at the end, execution jumps to the point + after the function invocation.

    +

    You can see that by following the next few steps. At Step 5, the red arrow has moved to line 2, which will execute + next. We say that control has passed from the top-level program to the function hello. After Steps 5 and 6 print out + two lines, at Step 7, control will be passed back to the point after where the invocation was started. At Step 8, that + has happened.

    +

    The same process of invocation occurs again on line 10, with lines 2 and 3 getting executed a second time.

    + + Common Mistake with Functions +

    It is a common mistake for beginners to forget their parenthesis after the function name. This is particularly + common in the case where there parameters are not required. Because the hello function defined above does not + require parameters, it's easy to forget the parenthesis. This is less common, but still possible, when trying to + call functions that require parameters.

    +
    +

    + Check your understanding +

    + + +

    What is a function in Python?

    +
    + + + +

    A named sequence of statements.

    +
    + +

    Yes, a function is a named sequence of statements.

    +
    +
    + + +

    Any sequence of statements.

    +
    + +

    While functions contain sequences of statements, not all sequences of statements are considered functions.

    +
    +
    + + +

    A mathematical expression that calculates a value.

    +
    + +

    While some functions do calculate values, the python idea of a function is slightly different from the mathematical idea of a function in that not all functions calculate values. Consider, for example, the turtle functions in this section. They made the turtle draw a specific shape, rather than calculating a value.

    +
    +
    + + +

    A statement of the form x = 5 + 4.

    +
    + +

    This statement is called an assignment statement. It assigns the value on the right (9), to the name on the left (x).

    +
    +
    +
    +
    + + +

    What is one main purpose of a function?

    +
    + + + +

    To improve the speed of execution

    +
    + +

    Functions have little effect on how fast the program runs.

    +
    +
    + + +

    To help the programmer organize programs into chunks that match how they think about the solution to the problem.

    +
    + +

    While functions are not required, they help the programmer better think about the solution by organizing pieces of the solution into logical chunks that can be reused.

    +
    +
    + + +

    All Python programs must be written using functions

    +
    + +

    In the first several chapters, you have seen many examples of Python programs written without the use of functions. While writing and using functions is desirable and essential for good programming style as your programs get longer, it is not required.

    +
    +
    + + +

    To calculate values.

    +
    + +

    Not all functions calculate values.

    +
    +
    +
    +
    + + +

    How many lines will be output by executing this code?

    + + +def hello(): + print("Hello") + print("Glad to meet you") + + +
    + + + +

    0

    +
    + +

    The code only defines the function. Nothing prints until the function is called.

    +
    +
    + + +

    1

    +
    + +

    Check again.

    +
    +
    + + +

    2

    +
    + +

    When the function is invoked, it will print two lines, but it has only been defined, not invoked.

    +
    +
    +
    +
    + + +

    How many lines will be output by executing this code?

    + + +def hello(): + print("Hello") + print("Glad to meet you") + +hello() +print("It works") +hello() +hello() + + +
    + + + +

    0

    +
    + +

    Here the the function is invoked and there is also a separate print statement.

    +
    +
    + + +

    1

    +
    + +

    There is only one print statement outside the funciton, but the invocations of hello also cause lines to print.

    +
    +
    + + +

    3

    +
    + +

    There are three print statements, but the function is invoked more than once.

    +
    +
    + + +

    4

    +
    + +

    Each time the function is invoked, it will print two lines, not one.

    +
    +
    + + +

    7

    +
    + +

    Three invocations generate two lines each, plus the line "It works".

    +
    +
    +
    +
    +
    diff --git a/pretext/Functions/FunctionParameters.ptx b/pretext/Functions/FunctionParameters.ptx new file mode 100644 index 00000000..687ec9b5 --- /dev/null +++ b/pretext/Functions/FunctionParameters.ptx @@ -0,0 +1,345 @@ + +
    + Function Parameters +

    Named functions are nice because, once they are defined and we understand what they do, we can refer to them by name + and not think too much about what they do. With parameters, functions are even more powerful, because they can do + pretty much the same thing on each invocation, but not exactly the same thing. The parameters can cause them to do + something a little different.

    +
    diff --git a/pretext/Functions/Functionscancallotherfunctions.ptx b/pretext/Functions/Functionscancallotherfunctions.ptx new file mode 100644 index 00000000..061bb36a --- /dev/null +++ b/pretext/Functions/Functionscancallotherfunctions.ptx @@ -0,0 +1,107 @@ + +
    + Functions can call other functions (Composition) +

    It is important to understand that each of the functions we write can be used and called from other functions we + write. This is one of the most important ways that computer programmers take a large problem and break it down into a + group of smaller problems. This process of breaking a problem into smaller subproblems is called functional decomposition.

    +

    Here's a simple example of functional decomposition using two functions. The first function called square simply + computes the square of a given number. The second function called sum_of_squares makes use of square to compute + the sum of three numbers that have been squared.

    + + +def square(x): + y = x * x + return y + +def sum_of_squares(x,y,z): + a = square(x) + b = square(y) + c = square(z) + + return a+b+c + +a = -5 +b = 2 +c = 10 +result = sum_of_squares(a,b,c) +print(result) + + +

    Even though this is a pretty simple idea, in practice this example illustrates many very important Python concepts, + including local and global variables along with parameter passing. Note that the body of square is not executed + until it is called from inside the sum_of_squares function for the first time on line 6.

    +

    Also notice that when square is called (at Step 8, for example), there are two groups of local variables, one for + square and one for sum_of_squares. Each group of local variables is called a stack frame. The variables + x, and y are local variables in both functions. These are completely different variables, even though they + have the same name. Each function invocation creates a new frame, and variables are looked up in that frame. Notice + that at step 11 of the execution, y has the value 25 in one frame and 2 in the other.

    +

    What happens when you to refer to variable y on line 3? Python looks up the value of y in the stack frame for the + square function. If it didn't find it there, it would go look in the global frame.

    +

    Let's use composition to build up a little more useful function. Recall from the dictionaries chapter that we had a two-step process for finding the letter that appears most frequently in a text string:

    +

    +

      +
    1. +

      Accumulate a dictionary with letters as keys and counts as values. See .

      +
    2. +
    3. +

      Find the best key from that dictionary. See .

      +
    4. +
    +

    +

    We can make functions for each of those and then compose them into a single function that finds the most common letter.

    + + +def most_common_letter(s): + frequencies = count_freqs(s) + return best_key(frequencies) + +def count_freqs(st): + d = {} + for c in st: + if c not in d: + d[c] = 0 + d[c] = d[c] + 1 + return d + +def best_key(dictionary): + ks = dictionary.keys() + best_key_so_far = list(ks)[0] # Have to turn ks into a real list before using [] to select an item + for k in ks: + if dictionary[k] > dictionary[best_key_so_far]: + best_key_so_far = k + return best_key_so_far + +print(most_common_letter("abbbbbbbbbbbccccddddd")) + + +

    + Check your Understanding +

    + + +

    1. Write two functions, one called addit and one called mult. addit takes one number as an input and adds 5. mult takes one number as an input, and multiplies that input by whatever is returned by addit, and then returns the result.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(mult(1), 6,"Testing the function mult with input 1 (should be 6)") + self.assertEqual(mult(-2), -6, "Testing the function mult with input -2 (should be -6)") + self.assertEqual(mult(0), 0, "Testing the function mult with input 0 (should be 0)") + + def testTwo(self): + self.assertEqual(addit(1), 6, "Testing the function addit with input 1 (should be 6)") + self.assertEqual(addit(-2), 3, "Testing the function addit with input -2 (should be 3)") + self.assertEqual(addit(0), 5, "Testing the function addit with input 0 (should be 5)") + +myTests().main() + + +
    +
    diff --git a/pretext/Functions/GlobalVariables.ptx b/pretext/Functions/GlobalVariables.ptx new file mode 100644 index 00000000..8722183d --- /dev/null +++ b/pretext/Functions/GlobalVariables.ptx @@ -0,0 +1,199 @@ + +
    + Global Variables +

    Variable names that are at the top-level, not inside any function definition, + are called global.

    +

    It is legal for a function to access a global variable. However, this is considered + bad form by nearly all programmers and should be avoided. This subsection + includes some examples that illustrate the potential interactions of global and + local variables. These will help you understand exactly how python works. Hopefully, + they will also convince you that things can get pretty confusing when you mix + local and global variables, and that you really shouldn't do it.

    +

    Look at the following, nonsensical variation of the square function.

    + + +def badsquare(x): + y = x ** power + return y + +power = 2 +result = badsquare(10) +print(result) + + +

    Although the badsquare function works, it is silly and poorly written. We have done it here to illustrate + an important rule about how variables are looked up in Python. + First, Python looks at the variables that are defined as local variables in + the function. We call this the local scope. If the variable name is not + found in the local scope, then Python looks at the global variables, + or global scope. This is exactly the case illustrated in the code above. + power is not found locally in badsquare but it does exist globally. + The appropriate way to write this function would be to pass power as a parameter. + For practice, you should rewrite the badsquare example to have a second parameter called power.

    +

    There is another variation on this theme of local versus global variables. Assignment statements in the local function cannot + change variables defined outside the function. Consider the following + codelens example:

    + + +def powerof(x,p): + power = p # Another dumb mistake + y = x ** power + return y + +power = 3 +result = powerof(10,2) +print(result) + + +

    Now step through the code. What do you notice about the values of variable power + in the local scope compared to the variable power in the global scope?

    +

    The value of power in the local scope was different than the global scope. + That is because in this example power was used on the left hand side of the + assignment statement power = p. When a variable name is used on the + left hand side of an assignment statement Python creates a local variable. + When a local variable has the same name as a global variable we say that the + local shadows the global. A shadow means that the global variable cannot + be accessed by Python because the local variable will be found first. This is + another good reason not to use global variables. As you can see, + it makes your code confusing and difficult to understand.

    +

    If you really want to change the value of a global variable inside a function, + you can can do it by explicitly declaring the variable to be global, as in the example + below. Again, you should not do this in your code. The example is here only + to cement your understanding of how python works.

    + + +def powerof(x,p): + global power # a really... + power = p # ...bad idea, but valid code + y = x ** power + return y + +power = 3 +result = powerof(10,2) +print(result) +print(power) + + +

    To cement all of these ideas even further lets look at one final example. + Inside the square function we are going to make an assignment to the + parameter x There's no good reason to do this other than to emphasize + the fact that the parameter x is a local variable. If you step through + the example in codelens you will see that although x is 0 in the local + variables for square, the x in the global scope remains 2. This is confusing + to many beginning programmers who think that an assignment to a + formal parameter will cause a change to the value of the variable that was + used as the actual parameter, especially when the two share the same name. + But this example demonstrates that that is clearly not how Python operates.

    + + +def square(x): + y = x * x + x = 0 # assign a new value to the parameter x + return y + +x = 2 +z = square(x) +print(z) + + +

    + Check your understanding +

    + + +

    What is a variable's scope?

    +
    + + + +

    Its value

    +
    + +

    Value is the contents of the variable. Scope concerns where the variable is "known".

    +
    +
    + + +

    The range of statements in the code where a variable can be accessed.

    +
    + +

    Correct.

    +
    +
    + + +

    Its name

    +
    + +

    The name of a variable is just an identifier or alias. Scope concerns where the variable is "known".

    +
    +
    +
    +
    + + +

    What is a local variable?

    +
    + + + +

    A temporary variable that is only used inside a function

    +
    + +

    Yes, a local variable is a temporary variable that is only known (only exists) in the function it is defined in.

    +
    +
    + + +

    The same as a parameter

    +
    + +

    While parameters may be considered local variables, functions may also define and use additional local variables.

    +
    +
    + + +

    Another name for any variable

    +
    + +

    Variables that are used outside a function are not local, but rather global variables.

    +
    +
    +
    +
    + + +

    Can you use the same name for a local variable as a global variable?

    +
    + + + +

    Yes, and there is no reason not to.

    +
    + +

    While there is no problem as far as Python is concerned, it is generally considered bad style because of the potential for the programmer to get confused.

    +
    +
    + + +

    Yes, but it is considered bad form.

    +
    + +

    it is generally considered bad style because of the potential for the programmer to get confused. If you must use global variables (also generally bad form) make sure they have unique names.

    +
    +
    + + +

    No, it will cause an error.

    +
    + +

    Python manages global and local scope separately and has clear rules for how to handle variables with the same name in different scopes, so this will not cause a Python error.

    +
    +
    +
    +
    + +

    WP: Scope

    +

    You may be asking yourself at this point when you should make some object a local variable and when should you make it a global variable. Generally, we do not recommend making variables global. Imagine you are trying to write a program that keeps track of money while purchasing groceries. You may make a variable that represents how much money the person has, called wallet. You also want to make a function called purchase, which will take the name of the item and its price, and then add the item to a list of groceries, and deduct the price from the amount stored in wallet. If you initialize wallet before the function as a variable within the global scope instead of passing it as a third parameter for purchase, then an error would occur because wallet would not be found in the local scope. Though there are ways to get around this, as outlined in this page, if your program was supposed to handle groceries for multiple people, then you would need to declare each wallet as a global variable in the functions that want to use wallet, and that would become very confusing and tedious to deal with.

    +
    +
    diff --git a/pretext/Functions/Glossary.ptx b/pretext/Functions/Glossary.ptx new file mode 100644 index 00000000..55f693fd --- /dev/null +++ b/pretext/Functions/Glossary.ptx @@ -0,0 +1,139 @@ + +
    + Glossary + + + argument +

    A value provided to a function when the function is called. This value + is assigned to the corresponding parameter in the function. The argument + can be the result of an expression which may involve operators, + operands and calls to other fruitful functions.

    +
    + + body +

    The second part of a compound statement. The body consists of a + sequence of statements all indented the same amount from the beginning + of the header. The standard amount of indentation used within the + Python community is 4 spaces.

    +
    + + calling stack +

    A sequence (stack) of frames, showing all the function calls that are in process + but not yet complete. When one function's code invokes another function call, + there will be more than one frame on the stack.

    +
    + + compound statement +

    A statement that consists of two parts:

    +

    +

      +
    1. +

      header - which begins with a keyword determining the statement + type, and ends with a colon.

      +
    2. +
    3. +

      body - containing one or more statements indented the same amount + from the header.

      +
    4. +
    +

    +

    The syntax of a compound statement looks like this:

    + + +keyword expression: + statement + statement + ... + + +
    + + docstring +

    If the first thing in a function body is a string (or, we'll see later, in other situations + too) that is attached to the function as its __doc__ attribute.

    +
    + + flow of execution +

    The order in which statements are executed during a program run.

    +
    + + function +

    A named sequence of statements that performs some useful operation. + Functions may or may not take parameters and may or may not produce a + result.

    +
    + + function call +

    A statement that executes a function. It consists of the name of the + function followed by a list of arguments enclosed in parentheses.

    +
    + + function composition +

    Using the output from one function call as the input to another.

    +
    + + function definition +

    A statement that creates a new function, specifying its name, + parameters, and the statements it executes.

    +
    + + fruitful function +

    A function that returns a value when it is called.

    +
    + + global variable +

    A variable defined at the top level, not inside any function.

    +
    + + header line +

    The first part of a compound statement. A header line begins with a keyword and + ends with a colon (:)

    +
    + + lifetime +

    Variables and objects have lifetimes — they are created at some point during + program execution, and will be destroyed at some time. In python, objects + live as long as there is some variable pointing to it, or it is part of some + other compound object, like a list or a dictionary. In python, local variables + live only until the function finishes execution.

    +
    + + local variable +

    A variable defined inside a function. A local variable can only be used + inside its function. Parameters of a function are also a special kind + of local variable.

    +
    + + method +

    A special kind of function that is invoked on objects of particular types of + objects, using the syntax <expr>.<methodname>(<additional parameter values>)

    +
    + + None +

    A special Python value. One use in Python is that it is returned + by functions that do not execute a return statement with a return argument.

    +
    + + parameter +

    A name used inside a function to refer to the value which was passed + to it as an argument.

    +
    + + return value +

    The value provided as the result of a function call.

    +
    + + side effect +

    Some lasting effect of a function call, other than its return value. Side effects include print statements, changes to mutable objects, and changes to the values of global variables.

    +
    + + stack frame +

    A frame that keeps track of the values of local variables during a function execution, + and where to return control when the function execution completes.

    +
    + + type annotation +

    An optional notation that specifies the type of a function parameter or function result.

    +
    +
    +
    diff --git a/pretext/Functions/PassingMutableObjects.ptx b/pretext/Functions/PassingMutableObjects.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Functions/PassingMutableObjects.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Functions/Printvsreturn.ptx b/pretext/Functions/Printvsreturn.ptx new file mode 100644 index 00000000..90a35fd5 --- /dev/null +++ b/pretext/Functions/Printvsreturn.ptx @@ -0,0 +1,207 @@ + +
    + 👩‍💻 Print vs. return +

    Many beginning programmers find the distinction between print and return very confusing, especially since most of the + illustrations of return values in intro texts like this one show the returned value from a function call by printing + it, as in print(square(g(2))).

    +

    The print statement is fairly easy to understand. It takes a python object and outputs a printed representation of it + in the output window. You can think of the print statement as something that takes an object from the land of the + program and makes it visible to the land of the human observer.

    + +

    Print is for people. Remember that slogan. Printing has no effect on the ongoing execution of a program. It doesn't assign a value to a variable. It doesn't return a value from a function call.

    +
    +

    If you're confused, chances are the source of your confusion is really about returned values and the evaluation of + complex expressions. A function that returns a value is producing a value for use by the program, in particular for + use in the part of the code where the function was invoked. Remember that when a function is invoked, the function's + code block is executed – all that code indented under the def statement gets executed, following the rules of the + Python formal language for what should and should not execute as it goes. But when the function returns, control goes + back to the calling location, and a return value may come back with it.

    +

    You've already seen some function calls in Chapter 1. When we told you about the function square that we defined, + you saw that the expression square(2) evaluated to the integer value 4.

    +

    That's because the square function returns a value: the square of whatever input is passed into it.

    +

    If a returned value is for use by the program, why did you make that function invocation to return a value? What do + you use the result of the function call for? There are three possibilities.

    +

    +

      +
    1. +
      +
    2. + Save it for later. +

      The returned value may be:

      +

      +

        +
      • +

        Assigned to a variable. For example, w = square(3)

        +
      • +
      • +

        Put in a list. For example, L.append(square(3))

        +
      • +
      • +

        Put in a dictionary. For example, d[3] = square(3)

        +
      • +
      +

      +
    3. +
      +
    4. +
    5. +
      +
    6. + Use it in a more complex expression. +

      In that case, think of the return value as + replacing the entire text of the function invocation. For example, if there is a line + of code w = square(square(3) + 7) - 5, think of the return value 9 replacing the + text square(3) in that invocation, so it becomes square(9 + 7) -5.

      +
    7. +
      +
    8. +
    9. +
      +
    10. + Print it for human consumption. +

      For example, print(square(3)) outputs 9 to the + output area. Note that, unless the return value is first saved as in possibility 1, it will be available + only to the humans watching the output area, not to the program as it continues executing.

      +
    11. +
      +
    12. +
    +

    +

    If your only purpose in running a function is to make an output visible for human consumption, there are two ways to + do it. You can put one or more print statements inside the function definition and not bother to return anything from + the function (the value None will be returned). In that case, invoke the function without a print statement. For + example, you can have an entire line of code that reads f(3). That will run the function f and throw away the + return value. Of course, if square doesn't print anything out or have any side effects, it's useless to call it and do + nothing with the return value. But with a function that has print statements inside it, it can be quite useful.

    +

    The other possibility is to return a value from the function and print it, as in print(f(3)). As you start to + write larger, more complex programs, this will be more typical. Indeed the print statement will usually only be a + temporary measure while you're developing the program. Eventually, you'll end up calling f and saving the return value + or using it as part of a more complex expression.

    +

    You will know you've really internalized the idea of functions when you are no longer confused about the difference + between print and return. Keep working at it until it makes sense to you!

    +

    + Check your understanding +

    + + +

    What will the following code output?

    + + +def square(x): + return x*x + +def g(y): + return y + 3 + +def h(y): + return square(y) + 3 + +print(h(2)) + + +
    + + + +

    2

    +
    + +

    2 is the input; the value returned from h is what will be printed.

    +
    +
    + + +

    5

    +
    + +

    Don't forget that 2 gets squared.

    +
    +
    + + +

    7

    +
    + +

    First square 2, then add 3.

    +
    +
    + + +

    25

    +
    + +

    3 is added to the result of squaring 2

    +
    +
    + + +

    Error: y has a value but x is an unbound variable inside the square function

    +
    + +

    When square is called, x is bound to the parameter value that is passed in, 2.

    +
    +
    +
    +
    + + +

    What will the following code output?

    + + +def square(x): + return x*x + +def g(y): + return y + 3 + +def h(y): + return square(y) + 3 + +print(g(h(2)) + + +
    + + + +

    2

    +
    + +

    Better read the section above one more time.

    +
    +
    + + +

    5

    +
    + +

    Better read the section above one more time.

    +
    +
    + + +

    7

    +
    + +

    That's h(2), but it is passed to g.

    +
    +
    + + +

    10

    +
    + +

    h(2) returns 7, so y is bound to 7 when g is invoked.

    +
    +
    + + +

    Error: you can't nest function calls

    +
    + +

    Ah, but you can nest function calls.

    +
    +
    +
    +
    +
    diff --git a/pretext/Functions/Returningavaluefromafunction.ptx b/pretext/Functions/Returningavaluefromafunction.ptx new file mode 100644 index 00000000..f3688ff4 --- /dev/null +++ b/pretext/Functions/Returningavaluefromafunction.ptx @@ -0,0 +1,630 @@ + +
    + Returning a value from a function + gif of a box labeled function with three spaces on the top for input and a space on the bottom for output. Three arrows enter the top and are labeled as input or arguments. The function box shakes, and then one arrow leaves the bottom of the function box. +

    Not only can you pass a parameter value into a function, a function can also produce a value. You have already + seen this in some previous functions that you have used. For example, len takes a list or string as a parameter + value and returns a number, the length of that list or string. range takes an integer as a parameter value and + returns a list containing all the numbers from 0 up to that parameter value.

    +

    Functions that return values are sometimes called fruitful functions. In many other languages, a function that + doesn't return a value is called a procedure, but we will stick here with the Python way of also calling it a + function, or if we want to stress it, a non-fruitful function.

    +
    diff --git a/pretext/Functions/SideEffects.ptx b/pretext/Functions/SideEffects.ptx new file mode 100644 index 00000000..77a52f5e --- /dev/null +++ b/pretext/Functions/SideEffects.ptx @@ -0,0 +1,69 @@ + +
    + Side Effects +

    We say that the function changeit has a side effect on the list object that is passed to it. Global + variables are another way to have side effects. For example, similar to examples you have seen above, we could make + double have a side effect on the global variable y.

    + + +def double(n): + global y + y = 2 * n + +y = 5 +double(y) +print(y) + + +

    Side effects are sometimes convenient. For example, it may be convenient to have a single dictionary that accumulates + information, and pass it around to various functions that might add to it or modify it.

    +

    However, programs that have side effects can be very difficult to debug. When an object has a value that is not what + you expected, it can be difficult to track down exactly where in the code it was set. Wherever it is practical to do + so, it is best to avoid side effects. The way to avoid using side effects is to use return values instead.

    +

    Instead of modifying a global variable inside a function, pass the global variable's value in as a parameter, and set + that global variable to be equal to a value returned from the function. For example, the following is a better version + of the code above.

    + + +def double(n): + return 2 * n + +y = 5 +y = double(y) +print(y) + + +

    You can use the same coding pattern to avoid confusing side effects with sharing of mutable objects. To do that, + explicitly make a copy of an object and pass the copy in to the function. Then return the modified copy and reassign it + to the original variable if you want to save the changes. The built-in list function, which takes a sequence as a + parameter and returns a new list, works to copy an existing list. For dictionaries, you can similarly call the dict + function, passing in a dictionary to get a copy of the dictionary back as a return value.

    + + +def changeit(lst): + lst[0] = "Michigan" + lst[1] = "Wolverines" + return lst + +mylst = ['106', 'students', 'are', 'awesome'] +newlst = changeit(list(mylst)) +print(mylst) +print(newlst) + + +

    In general, any lasting effect that occurs in a function, not through its return value, is called a side effect. There + are three ways to have side effects:

    +

    +

    +

    +
    diff --git a/pretext/Functions/TypeAnnotations.ptx b/pretext/Functions/TypeAnnotations.ptx new file mode 100644 index 00000000..acad79c5 --- /dev/null +++ b/pretext/Functions/TypeAnnotations.ptx @@ -0,0 +1,157 @@ + +
    + Type Annotations +

    In the previous section, we discussed the decoding work that is required when you look at a function and + are trying to determine the types of its parameters. In this section, we'll introduce a feature that can help + reduce the amount of sleuthing that is needed.

    +

    Consider the following function definition:

    + + +def duplicate(msg): + """Returns a string containing two copies of `msg`""" + + return msg + msg + + +

    This function is intended to duplicate a message; if called with the value ‘Hello', it returns the value + ‘HelloHello'. If called with other types of data, however, it will not work properly. (What will the + function do if given an int or a float value?)

    +

    Python allows you to indicate the intended type of the function parameters and the type of the function return value + in a function definition using a special notation demonstrated in this example:

    + + +def duplicate(msg: str) -> str: + """Returns a string containing two copies of `msg`""" + + return msg + msg + +result = duplicate('Hello') +print(result) + + +

    This definition of duplicate makes use of type annotations that indicate the function's parameter type and return + type. A type annotation, sometimes called a type hint, is an optional notation that specifies the type of a parameter or function result. It + tells the programmer using the function what kind of data to pass to the function, and what kind of data to expect when + the function returns a value.

    +

    In the definition above, the annotation : str in msg: str indicates that the caller should pass a str value as an argument. + The annotation -> str indicates that the function will produce a str result.

    +

    Here are some more examples of functions with type annotations:

    + + +def add(x: int, y: int) -> int: + """Returns the sum of `x` and `y`""" + + return x + y + +def get_number(msg: str) -> float: + """Prompts with `msg` for input; returns numeric response.""" + + return float(input(msg)) + +def display_msg(msg: str): + """Displays `msg` with dashed line underneath""" + + print(msg) + print('-------------------------------------') + + +

    It's important to understand that adding type annotations to a function definition does not cause the Python interpreter + to check that the values passed to a function are the expected types, or cause the returned value to be converted to the + expected type. For example, if the function add in the example above is called like this:

    +
    result = add('5', '15')
    +

    the function will receive two string values, concatenate them, and return the resulting string ‘515'. The int + annotations are completely ignored by the Python interpreter. Think of type annotations as a kind of function + documentation, and remember that they have no effect on the program's behavior.

    +

    Type annotations are an optional aspect of documenting functions. Still, type annotations are an important tool to increase + the readability of your code, and you should use them in your programs.

    + +

    Although type annotations are ignored by the Python interpreter, there are tools such as + mypy that can analyze your code containing type annotations and flag potential problems.

    +
    +

    Type hints can be especially useful for container types, like lists and dictionaries. When type hinting was first introduced into python, in version 3.5, it was possible to specify them, but a little clunky. Later versions made it a little easier.

    +

    For example, in the following code, which is valid in python version 3.10, the count_words function takes a string as input and returns a dictionary. That dictionary's keys should all be strings and the value associated with every key should be an integer.

    + + +def count_words(text: str) -> dict[str, int]: + words = text.split() + d = {} + for word in words: + if word not in d: + d[word] = 1 + else: + d[word] += 1 + return d + + +

    In the code below, the function add_em_up takes an input that is expected to be a list of numbers. It returns the sum of all of them.

    + + +def add_em_up(nums: list[int]) -> int: + tot = 0 + for num in nums: + tot += num + return tot + + +

    Actually, this code should work just fine if the inputs are either integers or floats. If any are floats, then the return value will be a float. The more recent versions of type annotations in python allow the use the | symbol (pronounced pipe) to specify a union, that either of two types is permitted. You may find that it's not permitted in the current runestone interpreter, though.

    + + +def add_em_up(nums: list[int | float]) -> int | float: + tot = 0 + for num in nums: + tot += num + return tot + + +

    + Check your understanding +

    + + +

    What happens when the following is executed?

    + + +def display(msg: str): + """Displays `msg` on the screen""" + print(msg + 2) + +display(2.5) + + +
    + + + +

    The value 4.5 is displayed on the screen.

    +
    + +

    Correct! Python ignores the ': str' annotation and returns the sum of msg (the float 2.5) + 2.

    +
    +
    + + +

    The value 2.52 is displayed on the screen.

    +
    + +

    Incorrect. In this call, msg contains the float value 2.5; the ': str' annotation serves only as documentation.

    +
    +
    + + +

    A runtime error occurs when the function is invoked because 2.5 is not a string.

    +
    + +

    Incorrect. Python ignores the ': str' annotation and allows the float value 2.5 to be passed to msg.

    +
    +
    + + +

    A runtime error occurs because the expression 'msg + 2' illegally attempts to concatenate a str and an int.

    +
    + +

    Incorrect. In this call, msg contains the float value 2.5, not a str, so the + operation is legal.

    +
    +
    +
    +
    +
    diff --git a/pretext/Functions/Variablesandparametersarelocal.ptx b/pretext/Functions/Variablesandparametersarelocal.ptx new file mode 100644 index 00000000..daac43fd --- /dev/null +++ b/pretext/Functions/Variablesandparametersarelocal.ptx @@ -0,0 +1,279 @@ + +
    + Variables and parameters are local +
    diff --git a/pretext/Functions/intro-Functions.ptx b/pretext/Functions/intro-Functions.ptx new file mode 100644 index 00000000..61ca164f --- /dev/null +++ b/pretext/Functions/intro-Functions.ptx @@ -0,0 +1,86 @@ + +
    + Introduction to Functions +
    diff --git a/pretext/Functions/toctree.ptx b/pretext/Functions/toctree.ptx new file mode 100644 index 00000000..a64c8a93 --- /dev/null +++ b/pretext/Functions/toctree.ptx @@ -0,0 +1,22 @@ + + + Functions + + + + + + + + + + + + + + + + + + + diff --git a/pretext/GenFigs/play-button/play-button.png b/pretext/GenFigs/play-button/play-button.png new file mode 100644 index 00000000..9e26551e Binary files /dev/null and b/pretext/GenFigs/play-button/play-button.png differ diff --git a/pretext/GenFigs/qrcode/assignvid.png b/pretext/GenFigs/qrcode/assignvid.png new file mode 100644 index 00000000..bf9caab5 Binary files /dev/null and b/pretext/GenFigs/qrcode/assignvid.png differ diff --git a/pretext/GenFigs/qrcode/binaryselection.png b/pretext/GenFigs/qrcode/binaryselection.png new file mode 100644 index 00000000..e202933b Binary files /dev/null and b/pretext/GenFigs/qrcode/binaryselection.png differ diff --git a/pretext/GenFigs/qrcode/booleanexpressions.png b/pretext/GenFigs/qrcode/booleanexpressions.png new file mode 100644 index 00000000..efa324c6 Binary files /dev/null and b/pretext/GenFigs/qrcode/booleanexpressions.png differ diff --git a/pretext/GenFigs/qrcode/c0bsKc4tiuY.png b/pretext/GenFigs/qrcode/c0bsKc4tiuY.png new file mode 100644 index 00000000..d2d04f46 Binary files /dev/null and b/pretext/GenFigs/qrcode/c0bsKc4tiuY.png differ diff --git a/pretext/GenFigs/qrcode/expression_vid.png b/pretext/GenFigs/qrcode/expression_vid.png new file mode 100644 index 00000000..0bf50027 Binary files /dev/null and b/pretext/GenFigs/qrcode/expression_vid.png differ diff --git a/pretext/GenFigs/qrcode/filesintrovideo.png b/pretext/GenFigs/qrcode/filesintrovideo.png new file mode 100644 index 00000000..8533bc47 Binary files /dev/null and b/pretext/GenFigs/qrcode/filesintrovideo.png differ diff --git a/pretext/GenFigs/qrcode/goog_course_intro.png b/pretext/GenFigs/qrcode/goog_course_intro.png new file mode 100644 index 00000000..ecdc621f Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_course_intro.png differ diff --git a/pretext/GenFigs/qrcode/goog_function_intro.png b/pretext/GenFigs/qrcode/goog_function_intro.png new file mode 100644 index 00000000..98d0bbf5 Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_function_intro.png differ diff --git a/pretext/GenFigs/qrcode/goog_function_parms.png b/pretext/GenFigs/qrcode/goog_function_parms.png new file mode 100644 index 00000000..7dda6693 Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_function_parms.png differ diff --git a/pretext/GenFigs/qrcode/goog_keyvalpairs.png b/pretext/GenFigs/qrcode/goog_keyvalpairs.png new file mode 100644 index 00000000..f8dc55e6 Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_keyvalpairs.png differ diff --git a/pretext/GenFigs/qrcode/goog_local_vars.png b/pretext/GenFigs/qrcode/goog_local_vars.png new file mode 100644 index 00000000..70a5a63a Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_local_vars.png differ diff --git a/pretext/GenFigs/qrcode/goog_return_values.png b/pretext/GenFigs/qrcode/goog_return_values.png new file mode 100644 index 00000000..db509305 Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_return_values.png differ diff --git a/pretext/GenFigs/qrcode/goog_waymo_swes.png b/pretext/GenFigs/qrcode/goog_waymo_swes.png new file mode 100644 index 00000000..f68558a1 Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_waymo_swes.png differ diff --git a/pretext/GenFigs/qrcode/goog_welcome.png b/pretext/GenFigs/qrcode/goog_welcome.png new file mode 100644 index 00000000..d4438129 Binary files /dev/null and b/pretext/GenFigs/qrcode/goog_welcome.png differ diff --git a/pretext/GenFigs/qrcode/listintro.png b/pretext/GenFigs/qrcode/listintro.png new file mode 100644 index 00000000..f982d88d Binary files /dev/null and b/pretext/GenFigs/qrcode/listintro.png differ diff --git a/pretext/GenFigs/qrcode/mutabilityvid.png b/pretext/GenFigs/qrcode/mutabilityvid.png new file mode 100644 index 00000000..c1039564 Binary files /dev/null and b/pretext/GenFigs/qrcode/mutabilityvid.png differ diff --git a/pretext/GenFigs/qrcode/reassignmentvid.png b/pretext/GenFigs/qrcode/reassignmentvid.png new file mode 100644 index 00000000..2f8e5fdc Binary files /dev/null and b/pretext/GenFigs/qrcode/reassignmentvid.png differ diff --git a/pretext/GenFigs/qrcode/stringintro.png b/pretext/GenFigs/qrcode/stringintro.png new file mode 100644 index 00000000..37d93b18 Binary files /dev/null and b/pretext/GenFigs/qrcode/stringintro.png differ diff --git a/pretext/GenFigs/qrcode/typesnconvert.png b/pretext/GenFigs/qrcode/typesnconvert.png new file mode 100644 index 00000000..4f9bfea6 Binary files /dev/null and b/pretext/GenFigs/qrcode/typesnconvert.png differ diff --git a/pretext/GenFigs/qrcode/unaryselection.png b/pretext/GenFigs/qrcode/unaryselection.png new file mode 100644 index 00000000..5b7676ae Binary files /dev/null and b/pretext/GenFigs/qrcode/unaryselection.png differ diff --git a/pretext/GenFigs/qrcode/updatevid.png b/pretext/GenFigs/qrcode/updatevid.png new file mode 100644 index 00000000..9baf6df6 Binary files /dev/null and b/pretext/GenFigs/qrcode/updatevid.png differ diff --git a/pretext/GenFigs/qrcode/vid_modules.png b/pretext/GenFigs/qrcode/vid_modules.png new file mode 100644 index 00000000..2d14ef8b Binary files /dev/null and b/pretext/GenFigs/qrcode/vid_modules.png differ diff --git a/pretext/GenFigs/qrcode/vid_turtleintro.png b/pretext/GenFigs/qrcode/vid_turtleintro.png new file mode 100644 index 00000000..27aaf51f Binary files /dev/null and b/pretext/GenFigs/qrcode/vid_turtleintro.png differ diff --git a/pretext/GenFigs/qrcode/whileloop.png b/pretext/GenFigs/qrcode/whileloop.png new file mode 100644 index 00000000..c2a3fb66 Binary files /dev/null and b/pretext/GenFigs/qrcode/whileloop.png differ diff --git a/pretext/GenFigs/trace/ac14_11_1.js b/pretext/GenFigs/trace/ac14_11_1.js new file mode 100644 index 00000000..b3a70dcb --- /dev/null +++ b/pretext/GenFigs/trace/ac14_11_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_ac14_11_1"] = {"code": "b = 15\n\nwhile b < 60:\n b = 5\n print(\"Bugs\")\n b = b + 7\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 15}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 15}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"b": 12}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"b": 5}, "ordered_globals": ["b"], "stack_to_render": [], "heap": {}, "stdout": "Bugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\nBugs\n"}, {"event": "instruction_limit_reached", "exception_msg": "Stopped after running 1000 steps. Please shorten your code,\nsince Python Tutor is not designed to handle long-running code."}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/ac8_12_3.js b/pretext/GenFigs/trace/ac8_12_3.js new file mode 100644 index 00000000..9b576246 --- /dev/null +++ b/pretext/GenFigs/trace/ac8_12_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_ac8_12_3"] = {"code": "colors = [\"Red\", \"Purple\", \"Yellow\"]\n\nfor position in range(len(colors)):\n color = colors[position]\n print(color)\n if color[0] in [\"P\", \"B\", \"T\"]:\n del colors[position]\n\nprint(colors)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1]}, "ordered_globals": ["colors"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 0}, "ordered_globals": ["colors", "position"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 0, "color": "Red"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 0, "color": "Red"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": "Red\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 0, "color": "Red"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": "Red\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 1, "color": "Red"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": "Red\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 1, "color": "Purple"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": "Red\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 1, "color": "Purple"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": "Red\nPurple\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 1, "color": "Purple"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Purple", "Yellow"]}, "stdout": "Red\nPurple\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 1, "color": "Purple"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Yellow"]}, "stdout": "Red\nPurple\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "position": 2, "color": "Purple"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Yellow"]}, "stdout": "Red\nPurple\n"}, {"line": 4, "event": "exception", "func_name": "", "globals": {"colors": ["REF", 1], "position": 2, "color": "Purple"}, "ordered_globals": ["colors", "position", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Yellow"]}, "stdout": "Red\nPurple\n", "exception_msg": "IndexError: list index out of range"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/ac8_12_4.js b/pretext/GenFigs/trace/ac8_12_4.js new file mode 100644 index 00000000..94f324e7 --- /dev/null +++ b/pretext/GenFigs/trace/ac8_12_4.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_ac8_12_4"] = {"code": "colors = [\"Red\", \"Orange\", \"Indigo\"]\n\nfor color in colors:\n if color[0] in [\"A\", \"E\", \"I\", \"O\", \"U\"]:\n colors.append(color)\n\n print(colors)\n\n if len(colors)>6:\n break\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1]}, "ordered_globals": ["colors"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Red"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Red"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": ""}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Red"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Red"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n"}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Orange"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n"}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}, {"line": 10, "event": "return", "func_name": "", "globals": {"colors": ["REF", 1], "color": "Indigo"}, "ordered_globals": ["colors", "color"], "stack_to_render": [], "heap": {"1": ["LIST", "Red", "Orange", "Indigo", "Orange", "Indigo", "Orange", "Indigo"]}, "stdout": "['Red', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange']\n['Red', 'Orange', 'Indigo', 'Orange', 'Indigo', 'Orange', 'Indigo']\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/chp13_classes2a.js b/pretext/GenFigs/trace/chp13_classes2a.js new file mode 100644 index 00000000..f44c1e35 --- /dev/null +++ b/pretext/GenFigs/trace/chp13_classes2a.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_chp13_classes2a"] = {"code": "class Point:\n \"\"\" Point class for representing and manipulating x,y coordinates. \"\"\"\n\n def __init__(self):\n\n self.x = 0\n self.y = 0\n\np = Point() # Instantiate an object of type Point\nq = Point() # and make a second point\n\nprint(p)\nprint(q)\n\nprint(p is q)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"Point": ["REF", 1]}, "ordered_globals": ["Point"], "stack_to_render": [], "heap": {"1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null]}, "stdout": ""}, {"line": 4, "event": "call", "func_name": "__init__", "globals": {"Point": ["REF", 1]}, "ordered_globals": ["Point"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 3]}, "ordered_varnames": ["self"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f1"}], "heap": {"3": ["INSTANCE", "Point"], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "__init__", "globals": {"Point": ["REF", 1]}, "ordered_globals": ["Point"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 3]}, "ordered_varnames": ["self"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f1"}], "heap": {"3": ["INSTANCE", "Point"], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "__init__", "globals": {"Point": ["REF", 1]}, "ordered_globals": ["Point"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 3]}, "ordered_varnames": ["self"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f1"}], "heap": {"3": ["INSTANCE", "Point", ["x", 0]], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null]}, "stdout": ""}, {"line": 7, "event": "return", "func_name": "__init__", "globals": {"Point": ["REF", 1]}, "ordered_globals": ["Point"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 3], "__return__": null}, "ordered_varnames": ["self", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f1"}], "heap": {"3": ["INSTANCE", "Point", ["x", 0], ["y", 0]], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null]}, "stdout": ""}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"Point": ["REF", 1], "p": ["REF", 3]}, "ordered_globals": ["Point", "p"], "stack_to_render": [], "heap": {"1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": ""}, {"line": 4, "event": "call", "func_name": "__init__", "globals": {"Point": ["REF", 1], "p": ["REF", 3]}, "ordered_globals": ["Point", "p"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 4]}, "ordered_varnames": ["self"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f2"}], "heap": {"4": ["INSTANCE", "Point"], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "__init__", "globals": {"Point": ["REF", 1], "p": ["REF", 3]}, "ordered_globals": ["Point", "p"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 4]}, "ordered_varnames": ["self"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f2"}], "heap": {"4": ["INSTANCE", "Point"], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "__init__", "globals": {"Point": ["REF", 1], "p": ["REF", 3]}, "ordered_globals": ["Point", "p"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 4]}, "ordered_varnames": ["self"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f2"}], "heap": {"4": ["INSTANCE", "Point", ["x", 0]], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": ""}, {"line": 7, "event": "return", "func_name": "__init__", "globals": {"Point": ["REF", 1], "p": ["REF", 3]}, "ordered_globals": ["Point", "p"], "stack_to_render": [{"func_name": "__init__", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"self": ["REF", 4], "__return__": null}, "ordered_varnames": ["self", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "__init___f2"}], "heap": {"4": ["INSTANCE", "Point", ["x", 0], ["y", 0]], "1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": ""}, {"line": 12, "event": "step_line", "func_name": "", "globals": {"Point": ["REF", 1], "p": ["REF", 3], "q": ["REF", 4]}, "ordered_globals": ["Point", "p", "q"], "stack_to_render": [], "heap": {"1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]], "4": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": ""}, {"line": 13, "event": "step_line", "func_name": "", "globals": {"Point": ["REF", 1], "p": ["REF", 3], "q": ["REF", 4]}, "ordered_globals": ["Point", "p", "q"], "stack_to_render": [], "heap": {"1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]], "4": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": "<__main__.Point object at 0x7f7a0edac2d0>\n"}, {"line": 15, "event": "step_line", "func_name": "", "globals": {"Point": ["REF", 1], "p": ["REF", 3], "q": ["REF", 4]}, "ordered_globals": ["Point", "p", "q"], "stack_to_render": [], "heap": {"1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]], "4": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": "<__main__.Point object at 0x7f7a0edac2d0>\n<__main__.Point object at 0x7f7a0edac850>\n"}, {"line": 15, "event": "return", "func_name": "", "globals": {"Point": ["REF", 1], "p": ["REF", 3], "q": ["REF", 4]}, "ordered_globals": ["Point", "p", "q"], "stack_to_render": [], "heap": {"1": ["CLASS", "Point", [], ["__init__", ["REF", 2]]], "2": ["FUNCTION", "__init__(self)", null], "3": ["INSTANCE", "Point", ["x", 0], ["y", 0]], "4": ["INSTANCE", "Point", ["x", 0], ["y", 0]]}, "stdout": "<__main__.Point object at 0x7f7a0edac2d0>\n<__main__.Point object at 0x7f7a0edac850>\nFalse\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens10_1_1.js b/pretext/GenFigs/trace/clens10_1_1.js new file mode 100644 index 00000000..6103df66 --- /dev/null +++ b/pretext/GenFigs/trace/clens10_1_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens10_1_1"] = {"code": "eng2sp = {}\neng2sp['one'] = 'uno'\neng2sp['two'] = 'dos'\neng2sp['three'] = 'tres'\nprint(eng2sp)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["one", "uno"]]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["one", "uno"], ["two", "dos"]]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["one", "uno"], ["two", "dos"], ["three", "tres"]]}, "stdout": ""}, {"line": 5, "event": "return", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["one", "uno"], ["two", "dos"], ["three", "tres"]]}, "stdout": "{'one': 'uno', 'two': 'dos', 'three': 'tres'}\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens10_1_2.js b/pretext/GenFigs/trace/clens10_1_2.js new file mode 100644 index 00000000..91a3100a --- /dev/null +++ b/pretext/GenFigs/trace/clens10_1_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens10_1_2"] = {"code": "eng2sp = {'three': 'tres', 'one': 'uno', 'two': 'dos'}\nprint(eng2sp)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["three", "tres"], ["one", "uno"], ["two", "dos"]]}, "stdout": ""}, {"line": 2, "event": "return", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["three", "tres"], ["one", "uno"], ["two", "dos"]]}, "stdout": "{'three': 'tres', 'one': 'uno', 'two': 'dos'}\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens10_1_3.js b/pretext/GenFigs/trace/clens10_1_3.js new file mode 100644 index 00000000..ec799043 --- /dev/null +++ b/pretext/GenFigs/trace/clens10_1_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens10_1_3"] = {"code": "eng2sp = {'three': 'tres', 'one': 'uno', 'two': 'dos'}\n\nvalue = eng2sp['two']\nprint(value)\nprint(eng2sp['one'])\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1]}, "ordered_globals": ["eng2sp"], "stack_to_render": [], "heap": {"1": ["DICT", ["three", "tres"], ["one", "uno"], ["two", "dos"]]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1], "value": "dos"}, "ordered_globals": ["eng2sp", "value"], "stack_to_render": [], "heap": {"1": ["DICT", ["three", "tres"], ["one", "uno"], ["two", "dos"]]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"eng2sp": ["REF", 1], "value": "dos"}, "ordered_globals": ["eng2sp", "value"], "stack_to_render": [], "heap": {"1": ["DICT", ["three", "tres"], ["one", "uno"], ["two", "dos"]]}, "stdout": "dos\n"}, {"line": 5, "event": "return", "func_name": "", "globals": {"eng2sp": ["REF", 1], "value": "dos"}, "ordered_globals": ["eng2sp", "value"], "stack_to_render": [], "heap": {"1": ["DICT", ["three", "tres"], ["one", "uno"], ["two", "dos"]]}, "stdout": "dos\nuno\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens10_2_1.js b/pretext/GenFigs/trace/clens10_2_1.js new file mode 100644 index 00000000..00f49a4c --- /dev/null +++ b/pretext/GenFigs/trace/clens10_2_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens10_2_1"] = {"code": "inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217}\n\ndel inventory['pears']\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"inventory": ["REF", 1]}, "ordered_globals": ["inventory"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 312], ["oranges", 525], ["pears", 217]]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "", "globals": {"inventory": ["REF", 1]}, "ordered_globals": ["inventory"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 312], ["oranges", 525]]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens10_2_2.js b/pretext/GenFigs/trace/clens10_2_2.js new file mode 100644 index 00000000..e194075f --- /dev/null +++ b/pretext/GenFigs/trace/clens10_2_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens10_2_2"] = {"code": "inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217}\n\ninventory['pears'] = 0\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"inventory": ["REF", 1]}, "ordered_globals": ["inventory"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 312], ["oranges", 525], ["pears", 217]]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "", "globals": {"inventory": ["REF", 1]}, "ordered_globals": ["inventory"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 312], ["oranges", 525], ["pears", 0]]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens10_2_3.js b/pretext/GenFigs/trace/clens10_2_3.js new file mode 100644 index 00000000..4fa2e0c9 --- /dev/null +++ b/pretext/GenFigs/trace/clens10_2_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens10_2_3"] = {"code": "inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217}\ninventory['bananas'] = inventory['bananas'] + 200\n\nnumItems = len(inventory)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"inventory": ["REF", 1]}, "ordered_globals": ["inventory"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 312], ["oranges", 525], ["pears", 217]]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"inventory": ["REF", 1]}, "ordered_globals": ["inventory"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 512], ["oranges", 525], ["pears", 217]]}, "stdout": ""}, {"line": 4, "event": "return", "func_name": "", "globals": {"inventory": ["REF", 1], "numItems": 4}, "ordered_globals": ["inventory", "numItems"], "stack_to_render": [], "heap": {"1": ["DICT", ["apples", 430], ["bananas", 512], ["oranges", 525], ["pears", 217]]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_13_1.js b/pretext/GenFigs/trace/clens11_13_1.js new file mode 100644 index 00000000..70f5576b --- /dev/null +++ b/pretext/GenFigs/trace/clens11_13_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_13_1"] = {"code": "def double(n):\n global y\n y = 2 * n\n\ny = 5\ndouble(y)\nprint(y)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"double": ["REF", 1]}, "ordered_globals": ["double"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "double", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [{"func_name": "double", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"n": 5}, "ordered_varnames": ["n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "double_f1"}], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "double", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [{"func_name": "double", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"n": 5}, "ordered_varnames": ["n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "double_f1"}], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "double", "globals": {"double": ["REF", 1], "y": 10}, "ordered_globals": ["double", "y"], "stack_to_render": [{"func_name": "double", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"n": 5, "__return__": null}, "ordered_varnames": ["n", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "double_f1"}], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"double": ["REF", 1], "y": 10}, "ordered_globals": ["double", "y"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 7, "event": "return", "func_name": "", "globals": {"double": ["REF", 1], "y": 10}, "ordered_globals": ["double", "y"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": "10\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_13_2.js b/pretext/GenFigs/trace/clens11_13_2.js new file mode 100644 index 00000000..678a236c --- /dev/null +++ b/pretext/GenFigs/trace/clens11_13_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_13_2"] = {"code": "def double(n):\n return 2 * n\n\ny = 5\ny = double(y)\nprint(y)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"double": ["REF", 1]}, "ordered_globals": ["double"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "double", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [{"func_name": "double", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"n": 5}, "ordered_varnames": ["n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "double_f1"}], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "double", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [{"func_name": "double", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"n": 5}, "ordered_varnames": ["n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "double_f1"}], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 2, "event": "return", "func_name": "double", "globals": {"double": ["REF", 1], "y": 5}, "ordered_globals": ["double", "y"], "stack_to_render": [{"func_name": "double", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"n": 5, "__return__": 10}, "ordered_varnames": ["n", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "double_f1"}], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"double": ["REF", 1], "y": 10}, "ordered_globals": ["double", "y"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": ""}, {"line": 6, "event": "return", "func_name": "", "globals": {"double": ["REF", 1], "y": 10}, "ordered_globals": ["double", "y"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "double(n)", null]}, "stdout": "10\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_13_3.js b/pretext/GenFigs/trace/clens11_13_3.js new file mode 100644 index 00000000..2bc1d654 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_13_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_13_3"] = {"code": "def changeit(lst):\n lst[0] = \"Michigan\"\n lst[1] = \"Wolverines\"\n return lst\n\nmylst = ['106', 'students', 'are', 'awesome']\nnewlst = changeit(list(mylst))\nprint(mylst)\nprint(newlst)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"changeit": ["REF", 1]}, "ordered_globals": ["changeit"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "changeit(lst)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2]}, "ordered_globals": ["changeit", "mylst"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "changeit", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2]}, "ordered_globals": ["changeit", "mylst"], "stack_to_render": [{"func_name": "changeit", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"lst": ["REF", 3]}, "ordered_varnames": ["lst"], "is_zombie": false, "is_highlighted": true, "unique_hash": "changeit_f1"}], "heap": {"3": ["LIST", "106", "students", "are", "awesome"], "1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "changeit", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2]}, "ordered_globals": ["changeit", "mylst"], "stack_to_render": [{"func_name": "changeit", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"lst": ["REF", 3]}, "ordered_varnames": ["lst"], "is_zombie": false, "is_highlighted": true, "unique_hash": "changeit_f1"}], "heap": {"3": ["LIST", "106", "students", "are", "awesome"], "1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "changeit", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2]}, "ordered_globals": ["changeit", "mylst"], "stack_to_render": [{"func_name": "changeit", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"lst": ["REF", 3]}, "ordered_varnames": ["lst"], "is_zombie": false, "is_highlighted": true, "unique_hash": "changeit_f1"}], "heap": {"3": ["LIST", "Michigan", "students", "are", "awesome"], "1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "changeit", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2]}, "ordered_globals": ["changeit", "mylst"], "stack_to_render": [{"func_name": "changeit", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"lst": ["REF", 3]}, "ordered_varnames": ["lst"], "is_zombie": false, "is_highlighted": true, "unique_hash": "changeit_f1"}], "heap": {"3": ["LIST", "Michigan", "Wolverines", "are", "awesome"], "1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"]}, "stdout": ""}, {"line": 4, "event": "return", "func_name": "changeit", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2]}, "ordered_globals": ["changeit", "mylst"], "stack_to_render": [{"func_name": "changeit", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"lst": ["REF", 3], "__return__": ["REF", 3]}, "ordered_varnames": ["lst", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "changeit_f1"}], "heap": {"3": ["LIST", "Michigan", "Wolverines", "are", "awesome"], "1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2], "newlst": ["REF", 3]}, "ordered_globals": ["changeit", "mylst", "newlst"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"], "3": ["LIST", "Michigan", "Wolverines", "are", "awesome"]}, "stdout": ""}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2], "newlst": ["REF", 3]}, "ordered_globals": ["changeit", "mylst", "newlst"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"], "3": ["LIST", "Michigan", "Wolverines", "are", "awesome"]}, "stdout": "['106', 'students', 'are', 'awesome']\n"}, {"line": 9, "event": "return", "func_name": "", "globals": {"changeit": ["REF", 1], "mylst": ["REF", 2], "newlst": ["REF", 3]}, "ordered_globals": ["changeit", "mylst", "newlst"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "changeit(lst)", null], "2": ["LIST", "106", "students", "are", "awesome"], "3": ["LIST", "Michigan", "Wolverines", "are", "awesome"]}, "stdout": "['106', 'students', 'are', 'awesome']\n['Michigan', 'Wolverines', 'are', 'awesome']\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_2_1.js b/pretext/GenFigs/trace/clens11_2_1.js new file mode 100644 index 00000000..c9ce94a7 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_2_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_2_1"] = {"code": "def hello():\n print(\"Hello\")\n print(\"Glad to meet you\")\n\nprint(type(hello))\nprint(type(\"hello\"))\n\nhello()\nprint(\"Hey, that just printed two lines with one line of code!\")\nhello() # do it again, just because we can...\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n"}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\n"}, {"line": 1, "event": "call", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {}, "ordered_varnames": [], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f1"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\n"}, {"line": 2, "event": "step_line", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {}, "ordered_varnames": [], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f1"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\n"}, {"line": 3, "event": "step_line", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {}, "ordered_varnames": [], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f1"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\n"}, {"line": 3, "event": "return", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"__return__": null}, "ordered_varnames": ["__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f1"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\n"}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\n"}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\nHey, that just printed two lines with one line of code!\n"}, {"line": 1, "event": "call", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {}, "ordered_varnames": [], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f2"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\nHey, that just printed two lines with one line of code!\n"}, {"line": 2, "event": "step_line", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {}, "ordered_varnames": [], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f2"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\nHey, that just printed two lines with one line of code!\n"}, {"line": 3, "event": "step_line", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {}, "ordered_varnames": [], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f2"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\nHey, that just printed two lines with one line of code!\nHello\n"}, {"line": 3, "event": "return", "func_name": "hello", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [{"func_name": "hello", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"__return__": null}, "ordered_varnames": ["__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello_f2"}], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\nHey, that just printed two lines with one line of code!\nHello\nGlad to meet you\n"}, {"line": 10, "event": "return", "func_name": "", "globals": {"hello": ["REF", 1]}, "ordered_globals": ["hello"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello()", null]}, "stdout": "\n\nHello\nGlad to meet you\nHey, that just printed two lines with one line of code!\nHello\nGlad to meet you\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_3_1.js b/pretext/GenFigs/trace/clens11_3_1.js new file mode 100644 index 00000000..a418d3b1 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_3_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_3_1"] = {"code": "def hello2(s):\n print(\"Hello \" + s)\n print(\"Glad to meet you\")\n\nhello2(\"Iman\")\nhello2(\"Jackie\")\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Iman"}, "ordered_varnames": ["s"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f1"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Iman"}, "ordered_varnames": ["s"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f1"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Iman"}, "ordered_varnames": ["s"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f1"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\n"}, {"line": 3, "event": "return", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Iman", "__return__": null}, "ordered_varnames": ["s", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f1"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\n"}, {"line": 1, "event": "call", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "Jackie"}, "ordered_varnames": ["s"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f2"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\n"}, {"line": 2, "event": "step_line", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "Jackie"}, "ordered_varnames": ["s"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f2"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\n"}, {"line": 3, "event": "step_line", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "Jackie"}, "ordered_varnames": ["s"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f2"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\nHello Jackie\n"}, {"line": 3, "event": "return", "func_name": "hello2", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [{"func_name": "hello2", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "Jackie", "__return__": null}, "ordered_varnames": ["s", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello2_f2"}], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\nHello Jackie\nGlad to meet you\n"}, {"line": 6, "event": "return", "func_name": "", "globals": {"hello2": ["REF", 1]}, "ordered_globals": ["hello2"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello2(s)", null]}, "stdout": "Hello Iman\nGlad to meet you\nHello Jackie\nGlad to meet you\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_3_2.js b/pretext/GenFigs/trace/clens11_3_2.js new file mode 100644 index 00000000..0f4bf959 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_3_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_3_2"] = {"code": "def hello3(s, n):\n greeting = \"Hello {} \".format(s)\n print(greeting*n)\n\nhello3(\"Wei\", 4)\nhello3(\"\", 1)\nhello3(\"Kitty\", 11)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Wei", "n": 4}, "ordered_varnames": ["s", "n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f1"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Wei", "n": 4}, "ordered_varnames": ["s", "n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f1"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Wei", "n": 4, "greeting": "Hello Wei "}, "ordered_varnames": ["s", "n", "greeting"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f1"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"s": "Wei", "n": 4, "greeting": "Hello Wei ", "__return__": null}, "ordered_varnames": ["s", "n", "greeting", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f1"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \n"}, {"line": 1, "event": "call", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "", "n": 1}, "ordered_varnames": ["s", "n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f2"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \n"}, {"line": 2, "event": "step_line", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "", "n": 1}, "ordered_varnames": ["s", "n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f2"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \n"}, {"line": 3, "event": "step_line", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "", "n": 1, "greeting": "Hello "}, "ordered_varnames": ["s", "n", "greeting"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f2"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \n"}, {"line": 3, "event": "return", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"s": "", "n": 1, "greeting": "Hello ", "__return__": null}, "ordered_varnames": ["s", "n", "greeting", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f2"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \n"}, {"line": 1, "event": "call", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"s": "Kitty", "n": 11}, "ordered_varnames": ["s", "n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f3"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \n"}, {"line": 2, "event": "step_line", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"s": "Kitty", "n": 11}, "ordered_varnames": ["s", "n"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f3"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \n"}, {"line": 3, "event": "step_line", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"s": "Kitty", "n": 11, "greeting": "Hello Kitty "}, "ordered_varnames": ["s", "n", "greeting"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f3"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \n"}, {"line": 3, "event": "return", "func_name": "hello3", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [{"func_name": "hello3", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"s": "Kitty", "n": 11, "greeting": "Hello Kitty ", "__return__": null}, "ordered_varnames": ["s", "n", "greeting", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "hello3_f3"}], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \nHello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty \n"}, {"line": 7, "event": "return", "func_name": "", "globals": {"hello3": ["REF", 1]}, "ordered_globals": ["hello3"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "hello3(s, n)", null]}, "stdout": "Hello Wei Hello Wei Hello Wei Hello Wei \nHello \nHello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty Hello Kitty \n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_4_1.js b/pretext/GenFigs/trace/clens11_4_1.js new file mode 100644 index 00000000..293a9dc1 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_4_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_4_1"] = {"code": "def square(x):\n y = x * x\n return y\n\ntoSquare = 10\nsquareResult = square(toSquare)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1]}, "ordered_globals": ["square"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "y": 100}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "y": 100, "__return__": 100}, "ordered_varnames": ["x", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 6, "event": "return", "func_name": "", "globals": {"square": ["REF", 1], "toSquare": 10, "squareResult": 100}, "ordered_globals": ["square", "toSquare", "squareResult"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_4_2.js b/pretext/GenFigs/trace/clens11_4_2.js new file mode 100644 index 00000000..ef156ca2 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_4_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_4_2"] = {"code": "def square(x):\n y = x * x\n print(y) # Bad! This is confusing! Should use return instead!\n\ntoSquare = 10\nsquareResult = square(toSquare)\nprint(\"The result of {} squared is {}.\".format(toSquare, squareResult))\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1]}, "ordered_globals": ["square"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "y": 100}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "toSquare": 10}, "ordered_globals": ["square", "toSquare"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "y": 100, "__return__": null}, "ordered_varnames": ["x", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": "100\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "toSquare": 10, "squareResult": null}, "ordered_globals": ["square", "toSquare", "squareResult"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": "100\n"}, {"line": 7, "event": "return", "func_name": "", "globals": {"square": ["REF", 1], "toSquare": 10, "squareResult": null}, "ordered_globals": ["square", "toSquare", "squareResult"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": "100\nThe result of 10 squared is None.\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_8_1.js b/pretext/GenFigs/trace/clens11_8_1.js new file mode 100644 index 00000000..71931fd0 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_8_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_8_1"] = {"code": "def powerof(x,p):\n power = p # Another dumb mistake\n y = x ** power\n return y\n\npower = 3\nresult = powerof(10,2)\nprint(result)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1]}, "ordered_globals": ["powerof"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2}, "ordered_varnames": ["x", "p"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2}, "ordered_varnames": ["x", "p"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2, "power": 2}, "ordered_varnames": ["x", "p", "power"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2, "power": 2, "y": 100}, "ordered_varnames": ["x", "p", "power", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 4, "event": "return", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2, "power": 2, "y": 100, "__return__": 100}, "ordered_varnames": ["x", "p", "power", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 3, "result": 100}, "ordered_globals": ["powerof", "power", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 8, "event": "return", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 3, "result": 100}, "ordered_globals": ["powerof", "power", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": "100\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_8_2.js b/pretext/GenFigs/trace/clens11_8_2.js new file mode 100644 index 00000000..bad7e0c8 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_8_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_8_2"] = {"code": "def powerof(x,p):\n global power # a really...\n power = p # ...bad idea, but valid code\n y = x ** power\n return y\n\npower = 3\nresult = powerof(10,2)\nprint(result)\nprint(power)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1]}, "ordered_globals": ["powerof"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2}, "ordered_varnames": ["x", "p"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 3}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2}, "ordered_varnames": ["x", "p"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 2}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2}, "ordered_varnames": ["x", "p"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 2}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2, "y": 100}, "ordered_varnames": ["x", "p", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 5, "event": "return", "func_name": "powerof", "globals": {"powerof": ["REF", 1], "power": 2}, "ordered_globals": ["powerof", "power"], "stack_to_render": [{"func_name": "powerof", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "p": 2, "y": 100, "__return__": 100}, "ordered_varnames": ["x", "p", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "powerof_f1"}], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 2, "result": 100}, "ordered_globals": ["powerof", "power", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": ""}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 2, "result": 100}, "ordered_globals": ["powerof", "power", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": "100\n"}, {"line": 10, "event": "return", "func_name": "", "globals": {"powerof": ["REF", 1], "power": 2, "result": 100}, "ordered_globals": ["powerof", "power", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "powerof(x, p)", null]}, "stdout": "100\n2\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_8_3.js b/pretext/GenFigs/trace/clens11_8_3.js new file mode 100644 index 00000000..12b5d879 --- /dev/null +++ b/pretext/GenFigs/trace/clens11_8_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_8_3"] = {"code": "def square(x):\n y = x * x\n x = 0 # assign a new value to the parameter x\n return y\n\nx = 2\nz = square(x)\nprint(z)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1]}, "ordered_globals": ["square"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "x": 2}, "ordered_globals": ["square", "x"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "x": 2}, "ordered_globals": ["square", "x"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "x": 2}, "ordered_globals": ["square", "x"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "x": 2}, "ordered_globals": ["square", "x"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 4}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "x": 2}, "ordered_globals": ["square", "x"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 0, "y": 4}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 4, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "x": 2}, "ordered_globals": ["square", "x"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 0, "y": 4, "__return__": 4}, "ordered_varnames": ["x", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "x": 2, "z": 4}, "ordered_globals": ["square", "x", "z"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 8, "event": "return", "func_name": "", "globals": {"square": ["REF", 1], "x": 2, "z": 4}, "ordered_globals": ["square", "x", "z"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": "4\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens11_9_1.js b/pretext/GenFigs/trace/clens11_9_1.js new file mode 100644 index 00000000..bc0c3d3e --- /dev/null +++ b/pretext/GenFigs/trace/clens11_9_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens11_9_1"] = {"code": "def square(x):\n y = x * x\n return y\n\ndef sum_of_squares(x,y,z):\n a = square(x)\n b = square(y)\n c = square(z)\n\n return a+b+c\n\na = -5\nb = 2\nc = 10\nresult = sum_of_squares(a,b,c)\nprint(result)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1]}, "ordered_globals": ["square"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 12, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2]}, "ordered_globals": ["square", "sum_of_squares"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 13, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5}, "ordered_globals": ["square", "sum_of_squares", "a"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 14, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2}, "ordered_globals": ["square", "sum_of_squares", "a", "b"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 15, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 5, "event": "call", "func_name": "sum_of_squares", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sum_of_squares_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "sum_of_squares", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sum_of_squares_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": -5}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": -5}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 25}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 25, "__return__": 25}, "ordered_varnames": ["x", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "sum_of_squares", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25}, "ordered_varnames": ["x", "y", "z", "a"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sum_of_squares_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25}, "ordered_varnames": ["x", "y", "z", "a"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f3"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25}, "ordered_varnames": ["x", "y", "z", "a"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f3"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25}, "ordered_varnames": ["x", "y", "z", "a"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 4}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f3"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25}, "ordered_varnames": ["x", "y", "z", "a"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 4, "__return__": 4}, "ordered_varnames": ["x", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f3"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "sum_of_squares", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4}, "ordered_varnames": ["x", "y", "z", "a", "b"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sum_of_squares_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4}, "ordered_varnames": ["x", "y", "z", "a", "b"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"x": 10}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f4"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4}, "ordered_varnames": ["x", "y", "z", "a", "b"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"x": 10}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f4"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4}, "ordered_varnames": ["x", "y", "z", "a", "b"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "y": 100}, "ordered_varnames": ["x", "y"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f4"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4}, "ordered_varnames": ["x", "y", "z", "a", "b"], "is_zombie": false, "is_highlighted": false, "unique_hash": "sum_of_squares_f1"}, {"func_name": "square", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"x": 10, "y": 100, "__return__": 100}, "ordered_varnames": ["x", "y", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f4"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 10, "event": "step_line", "func_name": "sum_of_squares", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4, "c": 100}, "ordered_varnames": ["x", "y", "z", "a", "b", "c"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sum_of_squares_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 10, "event": "return", "func_name": "sum_of_squares", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c"], "stack_to_render": [{"func_name": "sum_of_squares", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -5, "y": 2, "z": 10, "a": 25, "b": 4, "c": 100, "__return__": 129}, "ordered_varnames": ["x", "y", "z", "a", "b", "c", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sum_of_squares_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 16, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10, "result": 129}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": ""}, {"line": 16, "event": "return", "func_name": "", "globals": {"square": ["REF", 1], "sum_of_squares": ["REF", 2], "a": -5, "b": 2, "c": 10, "result": 129}, "ordered_globals": ["square", "sum_of_squares", "a", "b", "c", "result"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["FUNCTION", "sum_of_squares(x, y, z)", null]}, "stdout": "129\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens14_2_1.js b/pretext/GenFigs/trace/clens14_2_1.js new file mode 100644 index 00000000..b33a9a47 --- /dev/null +++ b/pretext/GenFigs/trace/clens14_2_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens14_2_1"] = {"code": "def sumTo(aBound):\n \"\"\" Return the sum of 1+2+3 ... n \"\"\"\n\n theSum = 0\n aNumber = 1\n while aNumber <= aBound:\n theSum = theSum + aNumber\n aNumber = aNumber + 1\n return theSum\n\nprint(sumTo(4))\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 11, "event": "step_line", "func_name": "", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4}, "ordered_varnames": ["aBound"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4}, "ordered_varnames": ["aBound"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 0}, "ordered_varnames": ["aBound", "theSum"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 0, "aNumber": 1}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 0, "aNumber": 1}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 1, "aNumber": 1}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 1, "aNumber": 2}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 1, "aNumber": 2}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 3, "aNumber": 2}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 3, "aNumber": 3}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 3, "aNumber": 3}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 6, "aNumber": 3}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 6, "aNumber": 4}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 6, "aNumber": 4}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 8, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 10, "aNumber": 4}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 10, "aNumber": 5}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 9, "event": "step_line", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 10, "aNumber": 5}, "ordered_varnames": ["aBound", "theSum", "aNumber"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 9, "event": "return", "func_name": "sumTo", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [{"func_name": "sumTo", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"aBound": 4, "theSum": 10, "aNumber": 5, "__return__": 10}, "ordered_varnames": ["aBound", "theSum", "aNumber", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "sumTo_f1"}], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": ""}, {"line": 11, "event": "return", "func_name": "", "globals": {"sumTo": ["REF", 1]}, "ordered_globals": ["sumTo"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "sumTo(aBound)", null]}, "stdout": "10\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens14_7_1.js b/pretext/GenFigs/trace/clens14_7_1.js new file mode 100644 index 00000000..c7f24a3e --- /dev/null +++ b/pretext/GenFigs/trace/clens14_7_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens14_7_1"] = {"code": "for i in range(5):\n for j in range(3):\n print(i, j)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 0}, "ordered_globals": ["i"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"i": 0, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"i": 1, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"i": 2, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"i": 3, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 0}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 1}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n4 1\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n4 1\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n4 1\n4 2\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"i": 4, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n4 1\n4 2\n"}, {"line": 1, "event": "return", "func_name": "", "globals": {"i": 4, "j": 2}, "ordered_globals": ["i", "j"], "stack_to_render": [], "heap": {}, "stdout": "0 0\n0 1\n0 2\n1 0\n1 1\n1 2\n2 0\n2 1\n2 2\n3 0\n3 1\n3 2\n4 0\n4 1\n4 2\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens15_1_1.js b/pretext/GenFigs/trace/clens15_1_1.js new file mode 100644 index 00000000..9537cd9b --- /dev/null +++ b/pretext/GenFigs/trace/clens15_1_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens15_1_1"] = {"code": "initial = 7\ndef f(x, y =3, z=initial):\n print(\"x, y, z, are: \" + str(x) + \", \" + str(y) + \", \" + str(z))\n\nf(2)\nf(2, 5)\nf(2, 5, 8)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"initial": 7}, "ordered_globals": ["initial"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 2, "event": "call", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 3, "z": 7}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 3, "z": 7}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 3, "z": 7, "__return__": null}, "ordered_varnames": ["x", "y", "z", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\n"}, {"line": 2, "event": "call", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 5, "z": 7}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\n"}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 5, "z": 7}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\n"}, {"line": 3, "event": "return", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 5, "z": 7, "__return__": null}, "ordered_varnames": ["x", "y", "z", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\nx, y, z, are: 2, 5, 7\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\nx, y, z, are: 2, 5, 7\n"}, {"line": 2, "event": "call", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 5, "z": 8}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\nx, y, z, are: 2, 5, 7\n"}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 5, "z": 8}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\nx, y, z, are: 2, 5, 7\n"}, {"line": 3, "event": "return", "func_name": "f", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 5, "z": 8, "__return__": null}, "ordered_varnames": ["x", "y", "z", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\nx, y, z, are: 2, 5, 7\nx, y, z, are: 2, 5, 8\n"}, {"line": 7, "event": "return", "func_name": "", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\nx, y, z, are: 2, 5, 7\nx, y, z, are: 2, 5, 8\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens15_1_2.js b/pretext/GenFigs/trace/clens15_1_2.js new file mode 100644 index 00000000..68cb6c6c --- /dev/null +++ b/pretext/GenFigs/trace/clens15_1_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens15_1_2"] = {"code": "initial = 7\ndef f(x, y =3, z=initial):\n print(\"x, y, z, are: \" + str(x) + \", \" + str(y) + \", \" + str(z))\n\ninitial = 10\nf(2)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"initial": 7}, "ordered_globals": ["initial"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"initial": 7, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"initial": 10, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 2, "event": "call", "func_name": "f", "globals": {"initial": 10, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 3, "z": 7}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"initial": 10, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 3, "z": 7}, "ordered_varnames": ["x", "y", "z"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "f", "globals": {"initial": 10, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": 2, "y": 3, "z": 7, "__return__": null}, "ordered_varnames": ["x", "y", "z", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\n"}, {"line": 6, "event": "return", "func_name": "", "globals": {"initial": 10, "f": ["REF", 1]}, "ordered_globals": ["initial", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(x, y, z)", null]}, "stdout": "x, y, z, are: 2, 3, 7\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens17_4_1.js b/pretext/GenFigs/trace/clens17_4_1.js new file mode 100644 index 00000000..55467bdb --- /dev/null +++ b/pretext/GenFigs/trace/clens17_4_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens17_4_1"] = {"code": "nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']]\nfor x in nested1:\n print(\"level1: \")\n for y in x:\n print(\" level2: \" + y)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2]}, "ordered_globals": ["nested1", "x"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2]}, "ordered_globals": ["nested1", "x"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "a"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "a"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "b"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "b"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "c"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "c"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 2], "y": "c"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "c"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "c"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "d"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "d"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "e"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "e"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 3], "y": "e"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\n"}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "e"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "e"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "f"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "f"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "g"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "g"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n level2: g\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "h"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n level2: g\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "h"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n level2: g\n level2: h\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "h"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n level2: g\n level2: h\n"}, {"line": 2, "event": "return", "func_name": "", "globals": {"nested1": ["REF", 1], "x": ["REF", 4], "y": "h"}, "ordered_globals": ["nested1", "x", "y"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "level1: \n level2: a\n level2: b\n level2: c\nlevel1: \n level2: d\n level2: e\nlevel1: \n level2: f\n level2: g\n level2: h\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens1_4_1.js b/pretext/GenFigs/trace/clens1_4_1.js new file mode 100644 index 00000000..43895edd --- /dev/null +++ b/pretext/GenFigs/trace/clens1_4_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens1_4_1"] = {"code": "print(\"My first program adds two numbers, 2 and 3:\")\nprint(2 + 3)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": "My first program adds two numbers, 2 and 3:\n"}, {"line": 2, "event": "return", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": "My first program adds two numbers, 2 and 3:\n5\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens21_2_1.js b/pretext/GenFigs/trace/clens21_2_1.js new file mode 100644 index 00000000..b775f280 --- /dev/null +++ b/pretext/GenFigs/trace/clens21_2_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens21_2_1"] = {"code": "def doubleStuff(a_list):\n \"\"\" Return a new list in which contains doubles of the elements in a_list. \"\"\"\n new_list = []\n for value in a_list:\n new_elem = 2 * value\n new_list.append(new_elem)\n return new_list\n\nthings = [2, 5, 9]\nthings = doubleStuff(things)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"doubleStuff": ["REF", 1]}, "ordered_globals": ["doubleStuff"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "doubleStuff(a_list)", null], "2": ["LIST", 2, 5, 9]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2]}, "ordered_varnames": ["a_list"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2]}, "ordered_varnames": ["a_list"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3]}, "ordered_varnames": ["a_list", "new_list"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST"], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 2}, "ordered_varnames": ["a_list", "new_list", "value"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST"], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 2, "new_elem": 4}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST"], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 2, "new_elem": 4}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 5, "new_elem": 4}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 5, "new_elem": 10}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 5, "new_elem": 10}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4, 10], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 9, "new_elem": 10}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4, 10], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 9, "new_elem": 18}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4, 10], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 9, "new_elem": 18}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4, 10, 18], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 9, "new_elem": 18}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4, 10, 18], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 7, "event": "return", "func_name": "doubleStuff", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 2]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [{"func_name": "doubleStuff", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a_list": ["REF", 2], "new_list": ["REF", 3], "value": 9, "new_elem": 18, "__return__": ["REF", 3]}, "ordered_varnames": ["a_list", "new_list", "value", "new_elem", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "doubleStuff_f1"}], "heap": {"2": ["LIST", 2, 5, 9], "3": ["LIST", 4, 10, 18], "1": ["FUNCTION", "doubleStuff(a_list)", null]}, "stdout": ""}, {"line": 10, "event": "return", "func_name": "", "globals": {"doubleStuff": ["REF", 1], "things": ["REF", 3]}, "ordered_globals": ["doubleStuff", "things"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "doubleStuff(a_list)", null], "3": ["LIST", 4, 10, 18]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens2_13_1.js b/pretext/GenFigs/trace/clens2_13_1.js new file mode 100644 index 00000000..8096153a --- /dev/null +++ b/pretext/GenFigs/trace/clens2_13_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens2_13_1"] = {"code": "a = 5\nb = a # after executing this line, a and b are now equal\nprint(a,b)\na = 3 # after executing this line, a and b are no longer equal\nprint(a,b)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"a": 5}, "ordered_globals": ["a"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"a": 5, "b": 5}, "ordered_globals": ["a", "b"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"a": 5, "b": 5}, "ordered_globals": ["a", "b"], "stack_to_render": [], "heap": {}, "stdout": "5 5\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"a": 3, "b": 5}, "ordered_globals": ["a", "b"], "stack_to_render": [], "heap": {}, "stdout": "5 5\n"}, {"line": 5, "event": "return", "func_name": "", "globals": {"a": 3, "b": 5}, "ordered_globals": ["a", "b"], "stack_to_render": [], "heap": {}, "stdout": "5 5\n3 5\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens2_7_1.js b/pretext/GenFigs/trace/clens2_7_1.js new file mode 100644 index 00000000..7c188693 --- /dev/null +++ b/pretext/GenFigs/trace/clens2_7_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens2_7_1"] = {"code": "message = \"What's up, Doc?\"\nn = 17\npi = 3.14159\n\nprint(message)\nprint(n)\nprint(pi)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"message": "What's up, Doc?"}, "ordered_globals": ["message"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"message": "What's up, Doc?", "n": 17}, "ordered_globals": ["message", "n"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"message": "What's up, Doc?", "n": 17, "pi": 3.1416}, "ordered_globals": ["message", "n", "pi"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"message": "What's up, Doc?", "n": 17, "pi": 3.1416}, "ordered_globals": ["message", "n", "pi"], "stack_to_render": [], "heap": {}, "stdout": "What's up, Doc?\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"message": "What's up, Doc?", "n": 17, "pi": 3.1416}, "ordered_globals": ["message", "n", "pi"], "stack_to_render": [], "heap": {}, "stdout": "What's up, Doc?\n17\n"}, {"line": 7, "event": "return", "func_name": "", "globals": {"message": "What's up, Doc?", "n": 17, "pi": 3.1416}, "ordered_globals": ["message", "n", "pi"], "stack_to_render": [], "heap": {}, "stdout": "What's up, Doc?\n17\n3.14159\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens2_7_2.js b/pretext/GenFigs/trace/clens2_7_2.js new file mode 100644 index 00000000..3271ff52 --- /dev/null +++ b/pretext/GenFigs/trace/clens2_7_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens2_7_2"] = {"code": "day = \"Thursday\"\nprint(day)\nday = \"Friday\"\nprint(day)\nday = 21\nprint(day)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"day": "Thursday"}, "ordered_globals": ["day"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"day": "Thursday"}, "ordered_globals": ["day"], "stack_to_render": [], "heap": {}, "stdout": "Thursday\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"day": "Friday"}, "ordered_globals": ["day"], "stack_to_render": [], "heap": {}, "stdout": "Thursday\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"day": "Friday"}, "ordered_globals": ["day"], "stack_to_render": [], "heap": {}, "stdout": "Thursday\nFriday\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"day": 21}, "ordered_globals": ["day"], "stack_to_render": [], "heap": {}, "stdout": "Thursday\nFriday\n"}, {"line": 6, "event": "return", "func_name": "", "globals": {"day": 21}, "ordered_globals": ["day"], "stack_to_render": [], "heap": {}, "stdout": "Thursday\nFriday\n21\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens5_7_1.js b/pretext/GenFigs/trace/clens5_7_1.js new file mode 100644 index 00000000..433964cd --- /dev/null +++ b/pretext/GenFigs/trace/clens5_7_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens5_7_1"] = {"code": "fruit = [\"apple\",\"orange\",\"banana\",\"cherry\"]\nnumlist = [6,7]\n\nnewlist = fruit + numlist\n\nzeros = [0] * 4\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"fruit": ["REF", 1]}, "ordered_globals": ["fruit"], "stack_to_render": [], "heap": {"1": ["LIST", "apple", "orange", "banana", "cherry"]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"fruit": ["REF", 1], "numlist": ["REF", 2]}, "ordered_globals": ["fruit", "numlist"], "stack_to_render": [], "heap": {"1": ["LIST", "apple", "orange", "banana", "cherry"], "2": ["LIST", 6, 7]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"fruit": ["REF", 1], "numlist": ["REF", 2], "newlist": ["REF", 3]}, "ordered_globals": ["fruit", "numlist", "newlist"], "stack_to_render": [], "heap": {"1": ["LIST", "apple", "orange", "banana", "cherry"], "2": ["LIST", 6, 7], "3": ["LIST", "apple", "orange", "banana", "cherry", 6, 7]}, "stdout": ""}, {"line": 6, "event": "return", "func_name": "", "globals": {"fruit": ["REF", 1], "numlist": ["REF", 2], "newlist": ["REF", 3], "zeros": ["REF", 4]}, "ordered_globals": ["fruit", "numlist", "newlist", "zeros"], "stack_to_render": [], "heap": {"1": ["LIST", "apple", "orange", "banana", "cherry"], "2": ["LIST", 6, 7], "3": ["LIST", "apple", "orange", "banana", "cherry", 6, 7], "4": ["LIST", 0, 0, 0, 0]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens6_6_1.js b/pretext/GenFigs/trace/clens6_6_1.js new file mode 100644 index 00000000..3f38a11d --- /dev/null +++ b/pretext/GenFigs/trace/clens6_6_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens6_6_1"] = {"code": "nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\naccum = 0\nfor w in nums:\n accum = accum + w\nprint(accum)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1]}, "ordered_globals": ["nums"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 0}, "ordered_globals": ["nums", "accum"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 0, "w": 1}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 1, "w": 1}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 1, "w": 2}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 3, "w": 2}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 3, "w": 3}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 6, "w": 3}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 6, "w": 4}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 10, "w": 4}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 10, "w": 5}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 15, "w": 5}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 15, "w": 6}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 21, "w": 6}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 21, "w": 7}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 28, "w": 7}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 28, "w": 8}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 36, "w": 8}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 36, "w": 9}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 45, "w": 9}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 45, "w": 10}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 55, "w": 10}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 55, "w": 10}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": ""}, {"line": 5, "event": "return", "func_name": "", "globals": {"nums": ["REF", 1], "accum": 55, "w": 10}, "ordered_globals": ["nums", "accum", "w"], "stack_to_render": [], "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}, "stdout": "55\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens7_8_1.js b/pretext/GenFigs/trace/clens7_8_1.js new file mode 100644 index 00000000..7ccd86db --- /dev/null +++ b/pretext/GenFigs/trace/clens7_8_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens7_8_1"] = {"code": "x = 10\ny = 10\n\nif x < y:\n print(\"x is less than y\")\nelse:\n if x > y:\n print(\"x is greater than y\")\n else:\n print(\"x and y must be equal\")\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"x": 10}, "ordered_globals": ["x"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"x": 10, "y": 10}, "ordered_globals": ["x", "y"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"x": 10, "y": 10}, "ordered_globals": ["x", "y"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"x": 10, "y": 10}, "ordered_globals": ["x", "y"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 10, "event": "return", "func_name": "", "globals": {"x": 10, "y": 10}, "ordered_globals": ["x", "y"], "stack_to_render": [], "heap": {}, "stdout": "x and y must be equal\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens8_1_1.js b/pretext/GenFigs/trace/clens8_1_1.js new file mode 100644 index 00000000..78cb82c1 --- /dev/null +++ b/pretext/GenFigs/trace/clens8_1_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens8_1_1"] = {"code": "fruit = [\"banana\", \"apple\", \"cherry\"]\n\nfruit[0] = \"pear\"\nfruit[-1] = \"orange\"\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"fruit": ["REF", 1]}, "ordered_globals": ["fruit"], "stack_to_render": [], "heap": {"1": ["LIST", "banana", "apple", "cherry"]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"fruit": ["REF", 1]}, "ordered_globals": ["fruit"], "stack_to_render": [], "heap": {"1": ["LIST", "pear", "apple", "cherry"]}, "stdout": ""}, {"line": 4, "event": "return", "func_name": "", "globals": {"fruit": ["REF", 1]}, "ordered_globals": ["fruit"], "stack_to_render": [], "heap": {"1": ["LIST", "pear", "apple", "orange"]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens8_7_2.js b/pretext/GenFigs/trace/clens8_7_2.js new file mode 100644 index 00000000..1f103aed --- /dev/null +++ b/pretext/GenFigs/trace/clens8_7_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens8_7_2"] = {"code": "origlist = [45,32,88]\n\noriglist = origlist + [\"cat\"]\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"origlist": ["REF", 1]}, "ordered_globals": ["origlist"], "stack_to_render": [], "heap": {"1": ["LIST", 45, 32, 88]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "", "globals": {"origlist": ["REF", 2]}, "ordered_globals": ["origlist"], "stack_to_render": [], "heap": {"2": ["LIST", 45, 32, 88, "cat"]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens8_7_2a.js b/pretext/GenFigs/trace/clens8_7_2a.js new file mode 100644 index 00000000..30f839d3 --- /dev/null +++ b/pretext/GenFigs/trace/clens8_7_2a.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens8_7_2a"] = {"code": "origlist = [45,32,88]\naliaslist = origlist\noriglist += [\"cat\"]\noriglist = origlist + [\"cow\"]\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"origlist": ["REF", 1]}, "ordered_globals": ["origlist"], "stack_to_render": [], "heap": {"1": ["LIST", 45, 32, 88]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"origlist": ["REF", 1], "aliaslist": ["REF", 1]}, "ordered_globals": ["origlist", "aliaslist"], "stack_to_render": [], "heap": {"1": ["LIST", 45, 32, 88]}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"origlist": ["REF", 1], "aliaslist": ["REF", 1]}, "ordered_globals": ["origlist", "aliaslist"], "stack_to_render": [], "heap": {"1": ["LIST", 45, 32, 88, "cat"]}, "stdout": ""}, {"line": 4, "event": "return", "func_name": "", "globals": {"origlist": ["REF", 2], "aliaslist": ["REF", 1]}, "ordered_globals": ["origlist", "aliaslist"], "stack_to_render": [], "heap": {"2": ["LIST", 45, 32, 88, "cat", "cow"], "1": ["LIST", 45, 32, 88, "cat"]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens8_7_3.js b/pretext/GenFigs/trace/clens8_7_3.js new file mode 100644 index 00000000..a6197e5f --- /dev/null +++ b/pretext/GenFigs/trace/clens8_7_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens8_7_3"] = {"code": "origlist = [45,32,88]\n\nnewlist = origlist + [\"cat\"]\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"origlist": ["REF", 1]}, "ordered_globals": ["origlist"], "stack_to_render": [], "heap": {"1": ["LIST", 45, 32, 88]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "", "globals": {"origlist": ["REF", 1], "newlist": ["REF", 2]}, "ordered_globals": ["origlist", "newlist"], "stack_to_render": [], "heap": {"1": ["LIST", 45, 32, 88], "2": ["LIST", 45, 32, 88, "cat"]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clensQuestion6_100_10.js b/pretext/GenFigs/trace/clensQuestion6_100_10.js new file mode 100644 index 00000000..c4f8b377 --- /dev/null +++ b/pretext/GenFigs/trace/clensQuestion6_100_10.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clensQuestion6_100_10"] = {"code": "item = [\"M\", \"I\", \"S\", \"S\", \"O\", \"U\", \"R\", \"I\"]\nfor val in item:\n val = val + \"!\"\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1]}, "ordered_globals": ["item"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "M"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "M!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "I"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "I!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "S"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "S!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "S"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "S!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "O"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "O!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "U"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "U!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "R"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "R!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "I"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"item": ["REF", 1], "val": "I!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}, {"line": 2, "event": "return", "func_name": "", "globals": {"item": ["REF", 1], "val": "I!"}, "ordered_globals": ["item", "val"], "stack_to_render": [], "heap": {"1": ["LIST", "M", "I", "S", "S", "O", "U", "R", "I"]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clensQuestion6_100_11.js b/pretext/GenFigs/trace/clensQuestion6_100_11.js new file mode 100644 index 00000000..f3c1f580 --- /dev/null +++ b/pretext/GenFigs/trace/clensQuestion6_100_11.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clensQuestion6_100_11"] = {"code": "for n in range(5):\n print(n)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"n": 0}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"n": 0}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"n": 1}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"n": 1}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"n": 2}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"n": 2}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n2\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"n": 3}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n2\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"n": 3}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n2\n3\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"n": 4}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n2\n3\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"n": 4}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n2\n3\n4\n"}, {"line": 1, "event": "return", "func_name": "", "globals": {"n": 4}, "ordered_globals": ["n"], "stack_to_render": [], "heap": {}, "stdout": "0\n1\n2\n3\n4\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens_1_1.js b/pretext/GenFigs/trace/clens_1_1.js new file mode 100644 index 00000000..12b7da21 --- /dev/null +++ b/pretext/GenFigs/trace/clens_1_1.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens_1_1"] = {"code": "nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']]\nprint(nested1[0])\nprint(len(nested1))\nnested1.append(['i'])\nfor L in nested1:\n print(L)\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "['a', 'b', 'c']\n"}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"]}, "stdout": "['a', 'b', 'c']\n3\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 2]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 2]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 3]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 3]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n['d', 'e']\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 4]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n['d', 'e']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 4]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n['d', 'e']\n['f', 'g', 'h']\n"}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 5]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n['d', 'e']\n['f', 'g', 'h']\n"}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 5]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n['d', 'e']\n['f', 'g', 'h']\n['i']\n"}, {"line": 5, "event": "return", "func_name": "", "globals": {"nested1": ["REF", 1], "L": ["REF", 5]}, "ordered_globals": ["nested1", "L"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": "['a', 'b', 'c']\n3\n['a', 'b', 'c']\n['d', 'e']\n['f', 'g', 'h']\n['i']\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens_1_2.js b/pretext/GenFigs/trace/clens_1_2.js new file mode 100644 index 00000000..8bcb3d1c --- /dev/null +++ b/pretext/GenFigs/trace/clens_1_2.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens_1_2"] = {"code": "nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h'], ['i']]\nnested1[1] = [1, 2, 3]\nnested1[1][0] = 100\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "3": ["LIST", "d", "e"], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 6], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "6": ["LIST", 1, 2, 3], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "", "globals": {"nested1": ["REF", 1]}, "ordered_globals": ["nested1"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 6], ["REF", 4], ["REF", 5]], "2": ["LIST", "a", "b", "c"], "6": ["LIST", 100, 2, 3], "4": ["LIST", "f", "g", "h"], "5": ["LIST", "i"]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens_1_3.js b/pretext/GenFigs/trace/clens_1_3.js new file mode 100644 index 00000000..5cc59f9c --- /dev/null +++ b/pretext/GenFigs/trace/clens_1_3.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens_1_3"] = {"code": "nested2 = [{'a': 1, 'b': 3}, {'a': 5, 'c': 90, 5: 50}, {'b': 3, 'c': \"yes\"}]\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 1, "event": "return", "func_name": "", "globals": {"nested2": ["REF", 1]}, "ordered_globals": ["nested2"], "stack_to_render": [], "heap": {"1": ["LIST", ["REF", 2], ["REF", 3], ["REF", 4]], "2": ["DICT", ["a", 1], ["b", 3]], "3": ["DICT", ["a", 5], ["c", 90], [5, 50]], "4": ["DICT", ["b", 3], ["c", "yes"]]}, "stdout": ""}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/clens_1_4.js b/pretext/GenFigs/trace/clens_1_4.js new file mode 100644 index 00000000..55d0f529 --- /dev/null +++ b/pretext/GenFigs/trace/clens_1_4.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_clens_1_4"] = {"code": "def square(x):\n return x*x\n\nL = [square, abs]\n\nprint(\"****names****\")\nfor f in L:\n print(f)\n\nprint(\"****call each of them****\")\nfor f in L:\n print(f(-2))\n\nprint(\"****just the first one in the list****\")\nprint(L[0])\nprint(L[0](3))\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 4, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1]}, "ordered_globals": ["square"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2]}, "ordered_globals": ["square", "L"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": ""}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2]}, "ordered_globals": ["square", "L"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n"}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n"}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n"}, {"line": 10, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n"}, {"line": 11, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n"}, {"line": 12, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n"}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -2}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n"}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -2}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n"}, {"line": 2, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"x": -2, "__return__": 4}, "ordered_varnames": ["x", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f1"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n"}, {"line": 11, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 1]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n"}, {"line": 12, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n"}, {"line": 11, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n"}, {"line": 14, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n"}, {"line": 15, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n****just the first one in the list****\n"}, {"line": 16, "event": "step_line", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n****just the first one in the list****\n\n"}, {"line": 1, "event": "call", "func_name": "square", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": 3}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n****just the first one in the list****\n\n"}, {"line": 2, "event": "step_line", "func_name": "square", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": 3}, "ordered_varnames": ["x"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n****just the first one in the list****\n\n"}, {"line": 2, "event": "return", "func_name": "square", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [{"func_name": "square", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"x": 3, "__return__": 9}, "ordered_varnames": ["x", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "square_f2"}], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n****just the first one in the list****\n\n"}, {"line": 16, "event": "return", "func_name": "", "globals": {"square": ["REF", 1], "L": ["REF", 2], "f": ["REF", 3]}, "ordered_globals": ["square", "L", "f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "square(x)", null], "2": ["LIST", ["REF", 1], ["REF", 3]], "3": ["FUNCTION", "abs(...)", null]}, "stdout": "****names****\n\n\n****call each of them****\n4\n2\n****just the first one in the list****\n\n9\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/opt_params_4.js b/pretext/GenFigs/trace/opt_params_4.js new file mode 100644 index 00000000..1a576e4b --- /dev/null +++ b/pretext/GenFigs/trace/opt_params_4.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_opt_params_4"] = {"code": "def f(a, L=[]):\n L.append(a)\n return L\n\nprint(f(1))\nprint(f(2))\nprint(f(3))\nprint(f(4, [\"Hello\"]))\nprint(f(5, [\"Hello\"]))\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 5, "event": "step_line", "func_name": "", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(a, L)", null]}, "stdout": ""}, {"line": 1, "event": "call", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a": 1, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"2": ["LIST"], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a": 1, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"2": ["LIST"], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": ""}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a": 1, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"2": ["LIST", 1], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": ""}, {"line": 3, "event": "return", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 1, "parent_frame_id_list": [], "encoded_locals": {"a": 1, "L": ["REF", 2], "__return__": ["REF", 2]}, "ordered_varnames": ["a", "L", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f1"}], "heap": {"2": ["LIST", 1], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": ""}, {"line": 6, "event": "step_line", "func_name": "", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n"}, {"line": 1, "event": "call", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"a": 2, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"2": ["LIST", 1], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n"}, {"line": 2, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"a": 2, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"2": ["LIST", 1], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n"}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"a": 2, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"2": ["LIST", 1, 2], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n"}, {"line": 3, "event": "return", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 2, "parent_frame_id_list": [], "encoded_locals": {"a": 2, "L": ["REF", 2], "__return__": ["REF", 2]}, "ordered_varnames": ["a", "L", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f2"}], "heap": {"2": ["LIST", 1, 2], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n"}, {"line": 7, "event": "step_line", "func_name": "", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n"}, {"line": 1, "event": "call", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"a": 3, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"2": ["LIST", 1, 2], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n"}, {"line": 2, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"a": 3, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"2": ["LIST", 1, 2], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n"}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"a": 3, "L": ["REF", 2]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"2": ["LIST", 1, 2, 3], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n"}, {"line": 3, "event": "return", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 3, "parent_frame_id_list": [], "encoded_locals": {"a": 3, "L": ["REF", 2], "__return__": ["REF", 2]}, "ordered_varnames": ["a", "L", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f3"}], "heap": {"2": ["LIST", 1, 2, 3], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n"}, {"line": 8, "event": "step_line", "func_name": "", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n"}, {"line": 1, "event": "call", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"a": 4, "L": ["REF", 3]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f4"}], "heap": {"3": ["LIST", "Hello"], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n"}, {"line": 2, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"a": 4, "L": ["REF", 3]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f4"}], "heap": {"3": ["LIST", "Hello"], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n"}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"a": 4, "L": ["REF", 3]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f4"}], "heap": {"3": ["LIST", "Hello", 4], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n"}, {"line": 3, "event": "return", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 4, "parent_frame_id_list": [], "encoded_locals": {"a": 4, "L": ["REF", 3], "__return__": ["REF", 3]}, "ordered_varnames": ["a", "L", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f4"}], "heap": {"3": ["LIST", "Hello", 4], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n"}, {"line": 9, "event": "step_line", "func_name": "", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n['Hello', 4]\n"}, {"line": 1, "event": "call", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 5, "parent_frame_id_list": [], "encoded_locals": {"a": 5, "L": ["REF", 4]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f5"}], "heap": {"4": ["LIST", "Hello"], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n['Hello', 4]\n"}, {"line": 2, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 5, "parent_frame_id_list": [], "encoded_locals": {"a": 5, "L": ["REF", 4]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f5"}], "heap": {"4": ["LIST", "Hello"], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n['Hello', 4]\n"}, {"line": 3, "event": "step_line", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 5, "parent_frame_id_list": [], "encoded_locals": {"a": 5, "L": ["REF", 4]}, "ordered_varnames": ["a", "L"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f5"}], "heap": {"4": ["LIST", "Hello", 5], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n['Hello', 4]\n"}, {"line": 3, "event": "return", "func_name": "f", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [{"func_name": "f", "is_parent": false, "frame_id": 5, "parent_frame_id_list": [], "encoded_locals": {"a": 5, "L": ["REF", 4], "__return__": ["REF", 4]}, "ordered_varnames": ["a", "L", "__return__"], "is_zombie": false, "is_highlighted": true, "unique_hash": "f_f5"}], "heap": {"4": ["LIST", "Hello", 5], "1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n['Hello', 4]\n"}, {"line": 9, "event": "return", "func_name": "", "globals": {"f": ["REF", 1]}, "ordered_globals": ["f"], "stack_to_render": [], "heap": {"1": ["FUNCTION", "f(a, L)", null]}, "stdout": "[1]\n[1, 2]\n[1, 2, 3]\n['Hello', 4]\n['Hello', 5]\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/trace/vtest.js b/pretext/GenFigs/trace/vtest.js new file mode 100644 index 00000000..f984217a --- /dev/null +++ b/pretext/GenFigs/trace/vtest.js @@ -0,0 +1,4 @@ +if (allTraceData === undefined) { + var allTraceData = {}; + } + allTraceData["fopp_2_vtest"] = {"code": "for name in [\"Joe\", \"Amy\", \"Brad\", \"Angelina\", \"Zuki\", \"Thandi\", \"Paris\"]:\n print(\"Hi \", name, \" Please come to my party on Saturday!\")\n\n", "trace": [{"line": 1, "event": "step_line", "func_name": "", "globals": {}, "ordered_globals": [], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Joe"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": ""}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Joe"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Amy"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Amy"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Brad"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Brad"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Angelina"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Angelina"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Zuki"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Zuki"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\nHi Zuki Please come to my party on Saturday!\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Thandi"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\nHi Zuki Please come to my party on Saturday!\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Thandi"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\nHi Zuki Please come to my party on Saturday!\nHi Thandi Please come to my party on Saturday!\n"}, {"line": 2, "event": "step_line", "func_name": "", "globals": {"name": "Paris"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\nHi Zuki Please come to my party on Saturday!\nHi Thandi Please come to my party on Saturday!\n"}, {"line": 1, "event": "step_line", "func_name": "", "globals": {"name": "Paris"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\nHi Zuki Please come to my party on Saturday!\nHi Thandi Please come to my party on Saturday!\nHi Paris Please come to my party on Saturday!\n"}, {"line": 1, "event": "return", "func_name": "", "globals": {"name": "Paris"}, "ordered_globals": ["name"], "stack_to_render": [], "heap": {}, "stdout": "Hi Joe Please come to my party on Saturday!\nHi Amy Please come to my party on Saturday!\nHi Brad Please come to my party on Saturday!\nHi Angelina Please come to my party on Saturday!\nHi Zuki Please come to my party on Saturday!\nHi Thandi Please come to my party on Saturday!\nHi Paris Please come to my party on Saturday!\n"}]} \ No newline at end of file diff --git a/pretext/GenFigs/youtube/assignvid.jpg b/pretext/GenFigs/youtube/assignvid.jpg new file mode 100644 index 00000000..691784b8 Binary files /dev/null and b/pretext/GenFigs/youtube/assignvid.jpg differ diff --git a/pretext/GenFigs/youtube/binaryselection.jpg b/pretext/GenFigs/youtube/binaryselection.jpg new file mode 100644 index 00000000..daa17b6a Binary files /dev/null and b/pretext/GenFigs/youtube/binaryselection.jpg differ diff --git a/pretext/GenFigs/youtube/booleanexpressions.jpg b/pretext/GenFigs/youtube/booleanexpressions.jpg new file mode 100644 index 00000000..95047106 Binary files /dev/null and b/pretext/GenFigs/youtube/booleanexpressions.jpg differ diff --git a/pretext/GenFigs/youtube/c0bsKc4tiuY.jpg b/pretext/GenFigs/youtube/c0bsKc4tiuY.jpg new file mode 100644 index 00000000..c32d4531 Binary files /dev/null and b/pretext/GenFigs/youtube/c0bsKc4tiuY.jpg differ diff --git a/pretext/GenFigs/youtube/expression_vid.jpg b/pretext/GenFigs/youtube/expression_vid.jpg new file mode 100644 index 00000000..cc92a169 Binary files /dev/null and b/pretext/GenFigs/youtube/expression_vid.jpg differ diff --git a/pretext/GenFigs/youtube/filesintrovideo.jpg b/pretext/GenFigs/youtube/filesintrovideo.jpg new file mode 100644 index 00000000..f8b635b2 Binary files /dev/null and b/pretext/GenFigs/youtube/filesintrovideo.jpg differ diff --git a/pretext/GenFigs/youtube/goog_course_intro.jpg b/pretext/GenFigs/youtube/goog_course_intro.jpg new file mode 100644 index 00000000..5742cb84 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_course_intro.jpg differ diff --git a/pretext/GenFigs/youtube/goog_function_intro.jpg b/pretext/GenFigs/youtube/goog_function_intro.jpg new file mode 100644 index 00000000..0aa33da1 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_function_intro.jpg differ diff --git a/pretext/GenFigs/youtube/goog_function_parms.jpg b/pretext/GenFigs/youtube/goog_function_parms.jpg new file mode 100644 index 00000000..fb985352 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_function_parms.jpg differ diff --git a/pretext/GenFigs/youtube/goog_keyvalpairs.jpg b/pretext/GenFigs/youtube/goog_keyvalpairs.jpg new file mode 100644 index 00000000..332139df Binary files /dev/null and b/pretext/GenFigs/youtube/goog_keyvalpairs.jpg differ diff --git a/pretext/GenFigs/youtube/goog_local_vars.jpg b/pretext/GenFigs/youtube/goog_local_vars.jpg new file mode 100644 index 00000000..d6617f88 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_local_vars.jpg differ diff --git a/pretext/GenFigs/youtube/goog_return_values.jpg b/pretext/GenFigs/youtube/goog_return_values.jpg new file mode 100644 index 00000000..253a7b87 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_return_values.jpg differ diff --git a/pretext/GenFigs/youtube/goog_waymo_swes.jpg b/pretext/GenFigs/youtube/goog_waymo_swes.jpg new file mode 100644 index 00000000..ca46cef5 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_waymo_swes.jpg differ diff --git a/pretext/GenFigs/youtube/goog_welcome.jpg b/pretext/GenFigs/youtube/goog_welcome.jpg new file mode 100644 index 00000000..f0c19ec9 Binary files /dev/null and b/pretext/GenFigs/youtube/goog_welcome.jpg differ diff --git a/pretext/GenFigs/youtube/listintro.jpg b/pretext/GenFigs/youtube/listintro.jpg new file mode 100644 index 00000000..163f4ae2 Binary files /dev/null and b/pretext/GenFigs/youtube/listintro.jpg differ diff --git a/pretext/GenFigs/youtube/mutabilityvid.jpg b/pretext/GenFigs/youtube/mutabilityvid.jpg new file mode 100644 index 00000000..f344ae4d Binary files /dev/null and b/pretext/GenFigs/youtube/mutabilityvid.jpg differ diff --git a/pretext/GenFigs/youtube/reassignmentvid.jpg b/pretext/GenFigs/youtube/reassignmentvid.jpg new file mode 100644 index 00000000..1eca293d Binary files /dev/null and b/pretext/GenFigs/youtube/reassignmentvid.jpg differ diff --git a/pretext/GenFigs/youtube/stringintro.jpg b/pretext/GenFigs/youtube/stringintro.jpg new file mode 100644 index 00000000..6f9a812d Binary files /dev/null and b/pretext/GenFigs/youtube/stringintro.jpg differ diff --git a/pretext/GenFigs/youtube/typesnconvert.jpg b/pretext/GenFigs/youtube/typesnconvert.jpg new file mode 100644 index 00000000..76864758 Binary files /dev/null and b/pretext/GenFigs/youtube/typesnconvert.jpg differ diff --git a/pretext/GenFigs/youtube/unaryselection.jpg b/pretext/GenFigs/youtube/unaryselection.jpg new file mode 100644 index 00000000..b71762ec Binary files /dev/null and b/pretext/GenFigs/youtube/unaryselection.jpg differ diff --git a/pretext/GenFigs/youtube/updatevid.jpg b/pretext/GenFigs/youtube/updatevid.jpg new file mode 100644 index 00000000..e0908ec0 Binary files /dev/null and b/pretext/GenFigs/youtube/updatevid.jpg differ diff --git a/pretext/GenFigs/youtube/vid_modules.jpg b/pretext/GenFigs/youtube/vid_modules.jpg new file mode 100644 index 00000000..71fff1e6 Binary files /dev/null and b/pretext/GenFigs/youtube/vid_modules.jpg differ diff --git a/pretext/GenFigs/youtube/vid_turtleintro.jpg b/pretext/GenFigs/youtube/vid_turtleintro.jpg new file mode 100644 index 00000000..12a38756 Binary files /dev/null and b/pretext/GenFigs/youtube/vid_turtleintro.jpg differ diff --git a/pretext/GenFigs/youtube/whileloop.jpg b/pretext/GenFigs/youtube/whileloop.jpg new file mode 100644 index 00000000..9c2405e1 Binary files /dev/null and b/pretext/GenFigs/youtube/whileloop.jpg differ diff --git a/pretext/GeneralIntro/ATypicalFirstProgram.ptx b/pretext/GeneralIntro/ATypicalFirstProgram.ptx new file mode 100644 index 00000000..9cfdff0f --- /dev/null +++ b/pretext/GeneralIntro/ATypicalFirstProgram.ptx @@ -0,0 +1,68 @@ + +
    + A Typical First Program +

    Traditionally, the first program written in a new language is called Hello, + World! because all it does is display the words, Hello, World! In Python, the source code + looks like this.

    + + +print("Hello, World!") + + +

    This is an example of using the print function, which doesn't actually + print anything on paper. It displays a value on the screen. In this case, the result is the phrase:

    +
    Hello, World!
    +

    Here is the example in an activecode window, where you can run it and modify it.

    + + +print("Hello, World!") + + +

    The quotation marks in the program mark the beginning and end of the value. + They don't appear in the result. You'll learn more about why in the next chapter.

    +

    Some people judge the quality of a programming language by the simplicity of + the Hello, World! program. By this standard, Python does about as well as + possible.

    +

    + Check your understanding +

    + + +

    The print function:

    +
    + + + +

    sends information to the printer to be printed on paper.

    +
    + +

    Within the Python programming language, the print statement has nothing to do with the printer.

    +
    +
    + + +

    displays a value on the screen.

    +
    + +

    Yes, the print statement is used to display the value of the thing being printed.

    +
    +
    + + +

    tells the computer to put the information in print, rather than cursive, format.

    +
    + +

    The format of the information is called its font and has nothing to do with the print statement.

    +
    +
    + + +

    tells the computer to speak the information.

    +
    + +

    That would be nice! But no...

    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/Algorithms.ptx b/pretext/GeneralIntro/Algorithms.ptx new file mode 100644 index 00000000..d6c07c45 --- /dev/null +++ b/pretext/GeneralIntro/Algorithms.ptx @@ -0,0 +1,117 @@ + +
    + Algorithms +

    If problem solving is a central part of computer science, then the solutions that you create through + the problem solving process are also important. In computer science, we refer to these solutions + as algorithms. An algorithm is a step by step list of instructions that if followed exactly will solve the problem under consideration.

    +

    For example, an algorithm to compute the area of a circle given its radius might look like this:

    + + Algorithm Example 1 (English) +

    +

      +
    1. +

      Ask for radius

      +
    2. +
    3. +

      Compute area by squaring radius and multiplying the result by pi

      +
    4. +
    5. +

      Display the computed area

      +
    6. +
    +

    +
    +

    Notice that this algorithm consists of a set of numbered steps. It is written in English, for ease of + understanding. Although simple algorithms are easily understood when written in English, more complicated + algorithms need more precise notation. For improved precision, algorithms are often written in pseudocode. Pseudocode is + a notation that is more precise than English but generally not as precise as a programming language. + The same algorithm expressed in pseudocode might look something like this:

    + + Algorithm Example 2 (Pseudocode) +

    +

      +
    1. +

      Ask for radius

      +
    2. +
    3. +

      let area = (radius2) × π

      +
    4. +
    5. +

      Display area

      +
    6. +
    +

    +
    +

    Note how the pseudocode example expresses step 2 more precisely, specifying the formula in mathematical + terms.

    +

    Our goal in computer science is to take a problem and develop an algorithm that can serve as a general solution. + Once we have such a solution, we can use our computer to automate its execution using programming. + Programming is a skill that allows a computer scientist to take an algorithm and represent it in + a notation (a program) that can be followed by a computer. A program is written in a programming language + such as Python, the language you will learn in this book.

    +

    To help you understand the difference between an algorithm and a program, consider this program to compute + the area of a circle:

    + + +radius = int(input("Enter the radius:")) +area = (radius * radius) * 3.1415 +print("The area of a circle with radius", radius, "is:", area) + + +

    A program is an algorithm expressed in a programming language. We might also say + that a program is an implementation of an algorithm. In this example, both the + algorithm and the program have three steps. The first step gets some input from + the user and the input into something the computer can do math with; + the second step performs a calculation using the information obtained + in the first step; and the final step displays the result to the user. Even + though we haven't covered any details of Python, hopefully you can see the + correspondence between the steps of the algorithm, which could be followed by a + human (but not executed by a computer), and the steps of the program, which can + be executed by a computer (try executing this one using the Run button).

    +

    Algorithms are important because the process of solving a problem through programming often begins + by designing an algorithm. The programmer often expresses the algorithm in + pseudocode, then converts the algorithm to a program for the computer to execute. + In the next section, you will learn how to execute Python programs on a computer.

    +

    + Check your understanding +

    + + +

    An algorithm is:

    +
    + + + +

    A solution to a problem that can be solved by a computer.

    +
    + +

    While it is true that algorithms often do solve problems, this is not the best answer. An algorithm is more than just the solution to the problem for a computer. An algorithm can be used to solve all sorts of problems, including those that have nothing to do with computers.

    +
    +
    + + +

    A step by step sequence of instructions that if followed exactly will solve the problem under consideration.

    +
    + +

    Algorithms are like recipes: they must be followed exactly, they must be clear and unambiguous, and they must end.

    +
    +
    + + +

    A series of instructions implemented in a programming language.

    +
    + +

    Programming languages are used to express algorithms, but an algorithm does not have to be expressed in terms of a programming language.

    +
    +
    + + +

    A special kind of notation used by programmers.

    +
    + +

    Programmers sometimes use a special notation to illustrate or document an algorithm, but this is not the definition of an algorithm.

    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/Comments.ptx b/pretext/GeneralIntro/Comments.ptx new file mode 100644 index 00000000..dcb9ddf4 --- /dev/null +++ b/pretext/GeneralIntro/Comments.ptx @@ -0,0 +1,70 @@ + +
    + Comments +

    As programs get bigger and more complicated, they get more difficult to read. + Formal languages are dense, and it is often difficult to look at a piece of + code and figure out what it is doing, or why. + For this reason, it is a good idea to add notes to your programs to explain in + natural language what the program is doing. These notes are called comments.

    +

    A comment in a computer program is text that is intended only for the human + reader - it is completely ignored by the interpreter. + In Python, the # token starts a comment. The rest of the line is ignored. + Here is a new version of Hello, World!.

    + + +#--------------------------------------------------- +# This demo program shows off how elegant Python is! +# Written by Joe Soap, December 2010. +# Anyone may freely copy or modify this program. +#--------------------------------------------------- + +print("Hello, World!") # Isn't this easy! + + +

    Notice that when you run this program, it still only prints the phrase Hello, World! None of the comments appear. + You'll also notice that we've left a blank line in the program. Blank lines + are also ignored by the interpreter, but comments and blank lines can make your + programs much easier for humans to parse. Use them liberally!

    +

    + Check your understanding +

    + + +

    What are comments for?

    +
    + + + +

    To tell the computer what you mean in your program.

    +
    + +

    Comments are ignored by the computer.

    +
    +
    + + +

    For the people who are reading your code to know, in natural language, what the program is doing.

    +
    + +

    The computer ignores comments. It's for the humans that will consume your program.

    +
    +
    + + +

    Nothing, they are extraneous information that is not needed.

    +
    + +

    Comments can provide much needed information for anyone reading the program.

    +
    +
    + + +

    Nothing in a short program. They are only needed for really large programs.

    +
    + +

    Even small programs benefit from comments.

    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/Exercises.ptx b/pretext/GeneralIntro/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/GeneralIntro/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/GeneralIntro/FormalandNaturalLanguages.ptx b/pretext/GeneralIntro/FormalandNaturalLanguages.ptx new file mode 100644 index 00000000..33f953f2 --- /dev/null +++ b/pretext/GeneralIntro/FormalandNaturalLanguages.ptx @@ -0,0 +1,165 @@ + +

    + Formal and Natural Languages +

    Natural languages are the languages that people speak, such as English, + Spanish, Korean, and Mandarin Chinese. They were not designed by people (although people try to + impose some order on them); they evolved naturally.

    +

    Formal languages are languages that are designed by people for specific + applications. For example, the notation that mathematicians use is a formal + language that is particularly good at denoting relationships among numbers and + symbols. Chemists use a formal language to represent the chemical structure of + molecules. And most importantly:

    +
    +

    + Programming languages are formal languages that have been designed to + express computations. +

    +
    +

    Formal languages tend to have strict rules about syntax. For example, 3+3=6 + is a syntactically correct mathematical statement, but 3=+6$ is not. + H2O is a syntactically correct chemical name, but 2Zz is + not.

    +

    Syntax rules come in two flavors, pertaining to tokens and structure. + Tokens are the basic elements of the language, such as words, numbers, and + chemical elements. One of the problems with 3=+6$ is that $ is not a + legal token in mathematics (at least as far as we know). Similarly, + 2Zz is not legal because there is no element with the abbreviation + Zz.

    +

    The second type of syntax rule pertains to the structure of a statement— + that is, the way the tokens are arranged. The statement 3=+6$ is + structurally illegal because you can't place a plus sign immediately after an + equal sign. Similarly, molecular formulas have to have subscripts after the + element name, not before.

    +

    When you read a sentence in English or a statement in a formal language, you + have to figure out what the structure of the sentence is (although in a natural + language you do this subconsciously). This process is called parsing.

    +

    For example, when you hear the sentence, The other shoe fell, you understand + that the other shoe is the subject and fell is the verb. Once you have parsed + a sentence, you can figure out what it means, or the semantics of the sentence. + Assuming that you know what a shoe is and what it means to fall, you will + understand the general implication of this sentence.

    +

    Although formal and natural languages have many features in common — tokens, + structure, syntax, and semantics — there are many differences:

    + + + ambiguity +

    Natural languages are full of ambiguity, which people deal with by + using contextual clues and other information. Formal languages are + designed to be nearly or completely unambiguous, which means that any + statement has exactly one meaning, regardless of context.

    +
    + + redundancy +

    In order to make up for ambiguity and reduce misunderstandings, natural + languages employ lots of redundancy. As a result, they are often + verbose. Formal languages are less redundant and more concise.

    +
    + + literalness +

    Formal languages mean exactly what they say. On the other hand, + natural languages are full of idiom and metaphor. If someone says, The + other shoe fell, there is probably no shoe and nothing falling.

    + +

    You'll need to find the original joke to understand the idiomatic + meaning of the other shoe falling. Yahoo! Answers thinks it + knows!

    +
    +
    +
    +

    People who grow up speaking a natural language—that is, everyone—often have a hard + time adjusting to formal languages. In some ways, the difference between natural and formal + language is like the difference between poetry and prose, but more + so:

    + + + poetry +

    Words are used for their sounds as well as for their meaning, and the + whole poem together creates an effect or emotional response. Ambiguity + is not only common but often deliberate.

    +
    + + prose +

    The literal meaning of words is more important, and the structure + contributes more meaning. Prose is more amenable to analysis than + poetry but still often ambiguous.

    +
    + + program +

    The meaning of a computer program is unambiguous and literal, and can + be understood entirely by analysis of the tokens and structure.

    +
    +
    +

    Here are some suggestions for reading programs (and other formal languages). + First, remember that formal languages are much more dense than natural + languages, so it takes longer to read them. Also, the structure is very + important, so it is usually not a good idea to read from top to bottom, left to + right. Instead, learn to parse the program in your head, identifying the tokens + and interpreting the structure. Finally, the details matter. Little things + like spelling errors and bad punctuation, which you can get away with in + natural languages, can make a big difference in a formal language.

    +

    + Check your understanding +

    + + +

    The differences between natural and formal languages include:

    +
    + + + +

    natural languages can be parsed while formal languages cannot.

    +
    + +

    Actually both languages can be parsed (determining the structure of the sentence), but formal languages can be parsed more easily in software.

    +
    +
    + + +

    ambiguity, redundancy, and literalness.

    +
    + +

    All of these can be present in natural languages, but cannot exist in formal languages.

    +
    +
    + + +

    there are no differences between natural and formal languages.

    +
    + +

    There are several differences between the two but they are also similar.

    +
    +
    + + +

    tokens, structure, syntax, and semantics.

    +
    + +

    These are the similarities between the two.

    +
    +
    +
    +
    + + +

    True or False: Reading a program is like reading other kinds of text.

    +
    + + + +

    True

    +
    + +

    It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding.

    +
    +
    + + +

    False

    +
    + +

    It usually takes longer to read a program because the structure is as important as the content and must be interpreted in smaller pieces for understanding.

    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/Glossary.ptx b/pretext/GeneralIntro/Glossary.ptx new file mode 100644 index 00000000..b5a9b60e --- /dev/null +++ b/pretext/GeneralIntro/Glossary.ptx @@ -0,0 +1,152 @@ + +
    + Glossary + + + activecode +

    A unique interpreter environment that allows Python to be executed from within a web browser.

    +
    + + algorithm +

    A step by step list of instructions that if followed exactly will solve the problem under consideration.

    +
    + + bug +

    An error in a program.

    +
    + + byte code +

    An intermediate language between source code and object code. Many + modern languages first compile source code into byte code and then + interpret the byte code with a program called a virtual machine.

    +
    + + codelens +

    An interactive environment that allows the user to control the step by step execution of a Python program

    +
    + + comment +

    Information in a program that is meant for other programmers (or anyone + reading the source code) and has no effect on the execution of the + program.

    +
    + + compile +

    To translate a program written in a high-level language into a + low-level language all at once, in preparation for later execution.

    +
    + + debugging +

    The process of finding and removing any of the three kinds of + programming errors: *syntax error*, *semantic error*, and *runtime error*.

    +
    + + exception +

    Another name for a runtime error.

    +
    + + executable +

    Another name for object code that is ready to be executed.

    +
    + + formal language +

    Any one of the languages that people have designed for specific + purposes, such as representing mathematical ideas or computer programs; + all programming languages are formal languages.

    +
    + + high-level language +

    A programming language like Python that is designed to be easy for + humans to read and write.

    +
    + + interpret +

    To execute a program in a high-level language by translating it one + line at a time.

    +
    + + low-level language +

    A programming language that is designed to be easy for a computer to + execute; also called machine language or assembly language.

    +
    + + natural language +

    Any one of the languages that people speak that evolved naturally.

    +
    + + object code +

    The output of the compiler after it translates the program.

    +
    + + parse +

    To examine a program and analyze the syntactic structure.

    +
    + + portability +

    A property of a program that can run on more than one kind of computer.

    +
    + + print function +

    A function used in a program or script that causes the Python + interpreter to display a value on its output device.

    +
    + + problem solving +

    The process of formulating a problem, finding a solution, and + expressing the solution.

    +
    + + program +

    A sequence of instructions that specifies to a computer actions and + computations to be performed.

    +
    + + programming language +

    A vocabulary and set of grammatical rules for instructing a computer or computing device to perform specific tasks.

    +
    + + Python shell +

    An interactive user interface to the Python interpreter, and the user of a + Python shell types commands at the prompt (>>>), and presses the return + key to send these commands immediately to the interpreter for + processing. To initiate the Python Shell, the user should open theterminal and type python. Once the user presses enter, the Python Shell appears and the user can interact with it.

    +
    + + runtime error +

    An error that does not occur until the program has started to execute + but that prevents the program from continuing.

    +
    + + semantic error +

    An error in a program that makes it do something other than what the + programmer intended.

    +
    + + semantics +

    The meaning of a program.

    +
    + + shell mode +

    A mode of using Python where expressions can be typed and executed in the command + prompt, and the results are shown immediately in the command terminal window. Shell mode is initiated by opening the terminal of your operating system and typing python. Press enter and the Python Shell will appear. This is in contrast to source code. Also see the entry under Python shell.

    +
    + + source code +

    The instructions in a program, stored in a file, in a high-level language before being compiled or interpreted.

    +
    + + syntax +

    The structure of a program.

    +
    + + syntax error +

    An error in a program that makes it impossible to parse — and + therefore impossible to interpret.

    +
    + + token +

    One of the basic elements of the syntactic structure of a program, + analogous to a word in a natural language.

    +
    +
    +
    diff --git a/pretext/GeneralIntro/MoreAboutPrograms.ptx b/pretext/GeneralIntro/MoreAboutPrograms.ptx new file mode 100644 index 00000000..32868d1b --- /dev/null +++ b/pretext/GeneralIntro/MoreAboutPrograms.ptx @@ -0,0 +1,125 @@ + +
    + More About Programs +

    A program is a sequence of instructions that specifies how to perform a + computation. The computation might be something as complex as rendering an html page in a web browser + or encoding a video and streaming it across the network. It can also be a + symbolic computation, such as searching for and replacing text in a document or + (strangely enough) compiling a program.

    +

    The details look different in different languages, but a few basic instructions + appear in just about every language.

    +
    +
  • + input +

    Get data from the keyboard, a file, or some other device.

    +
  • +
  • + output +

    Display data on the screen or send data to a file or other device.

    +
  • +
  • + math and logic +

    Perform basic mathematical operations like addition and multiplication + and logical operations like and, or, and not.

    +
  • +
  • + conditional execution +

    Check for certain conditions and execute the appropriate sequence of + statements.

    +
  • +
  • + repetition +

    Perform some action repeatedly, usually with some variation.

    +
  • +
    +

    Believe it or not, that's pretty much all there is to it. Every program you've + ever used, no matter how complicated, is made up of instructions that look more + or less like these. Thus, we can describe programming as the process of + breaking a large, complex task into smaller and smaller subtasks until the + subtasks are simple enough to be performed with sequences of these basic + instructions.

    + + Preview of Control Structures +

    We won't get too much into python control structures yet, but it is good to mention them early to give you a taste for what you can do with the language! + If these make sense to you now, that's great! + However, we don't expect you to understand these yet - understanding will come later.

    +

    First we have structures that allow us to iterate over something. + We can look at strings character-by-character or lists item-by-item until we've reached the end of them by using something called a for loop.

    + + +for character in "Cool string": + print(character) + + +

    We can also iterate without a definite stopping point with while loops. + You might use this if you want to receive input from the user of your program but you don't know how long it'll take for them to be done with your code.

    + + +grocery_item = "" +while grocery_item != "done": + grocery_item = input("Please write down an item to add to your grocery list. When you are done writing the list simply type: done") + print(grocery_item) + + +

    Other structures will allow us to only run parts of our programs or only do some task if a certain set of conditions are found. + Conditionals, as they're called, allow us to do that. + Check out how adding conditionals to our code can change what we can write about regarding grocery shopping.

    + + +grocery_item = "" +grocery_list = [] +while grocery_item != "done": + grocery_item = input("Please write down an item to add to your grocery list. When you are done writing the list then simply type: done") + if grocery_item == 'done': + continue + else: + print("adding the item to the list") + grocery_list.append(grocery_item) +print("Here is our grocery list:") +print(grocery_list) + + +

    + Check your understanding +

    + + +

    A program is:

    +
    + + + +

    a sequence of instructions that specifies how to perform a computation.

    +
    + +

    It is just step-by-step instructions that the computer can understand and execute. Programs often implement algorithms, but note that algorithms are typically less precise than programs and do not have to be written in a programming language.

    +
    +
    + + +

    something you follow along at a play or concert.

    +
    + +

    True, but not in this context. We mean a program as related to a computer.

    +
    +
    + + +

    a computation, even a symbolic computation.

    +
    + +

    A program can perform a computation, but by itself it is not one.

    +
    +
    + + +

    the same thing as an algorithm.

    +
    + +

    Programs often implement algorithms, but they are not the same thing. An algorithm is a step by step list of instructions, but those instructions are not necessarily precise enough for a computer to follow. A program must be written in a programming language that the computer knows how to interpret.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/SpecialWaystoExecutePythoninthisBook.ptx b/pretext/GeneralIntro/SpecialWaystoExecutePythoninthisBook.ptx new file mode 100644 index 00000000..9593550e --- /dev/null +++ b/pretext/GeneralIntro/SpecialWaystoExecutePythoninthisBook.ptx @@ -0,0 +1,132 @@ + +
    + Special Ways to Execute Python in this Book +

    This book provides two additional ways to execute Python programs. Both techniques are designed to assist you as you + learn the Python programming language. They will help you increase your understanding of how Python programs work.

    +

    First, you can write, modify, and execute programs using a unique activecode interpreter that allows you to execute Python code right + in the text itself (right from the web browser). Although this is certainly not the way real programs are written, it provides an excellent + environment for learning a programming language like Python since you can experiment with the language as you are reading.

    +

    Take a look at the activecode interpreter in action. Try pressing the Save & Run button below. (If you are not logged + in, it will just say Run.)

    + + +print("My first program adds two numbers, 2 and 3:") +print(2 + 3) + + +

    Now try modifying the program shown above. First, modify the string in the + first print statement by changing the word adds to the word multiplies. Now press + Save & Run again. You can see that the result of the program has changed. However, it still prints + 5 as the answer. Modify the second print statement by changing the addition symbol, the + +, to the multiplication symbol, *. Press Save & Run again to see the new results.

    +

    As the name suggests, Save & Run also saves your latest version of the code, + and you can recover it even in later sessions when logged in. If not logged in, + Run saves versions only until your browser leaves the current web page, + and then you lose all modifications.

    +

    If you are logged in, when a page first loads, each activecode window will have a Load History button, to the + right of the Save & Run button. + If you click on it, or if you run any code, that button turns into a slider. + If you click on the slider location box, you can use your left and right arrow + buttons to switch to other versions you ran. + Alternately you can drag the box on the slider. + Now move the slider to see a previously saved version of your code. You can edit or run any version.

    +

    In addition to activecode, you can also execute Python code with the assistance of a unique + visualization tool. This tool, known as codelens, allows you to control the step by + step execution of a program. It also lets you see the values of all variables as they are + created and modified. In activecode, the source code executes from beginning to end and you + can see the final result. In codelens you can see and control the step by step progress. + Note that the red arrow always points to the next line of code that is going to be executed. + The light green arrow points to the line that was just executed. Click on the Show in + Codelens button to make the codelens window show up, and then click on the Forward button + a few times to step through the execution.

    +

    Sometimes, we will present code examples explicitly in a codelens window in the textbook, as below. + When we do, think of it as an encouragement to use the codelens features to step through the + execution of the program.

    + + +print("My first program adds two numbers, 2 and 3:") +print(2 + 3) + + +

    + Check your understanding +

    + + +

    The activecode interpreter allows you to (select all that apply):

    +
    + + + +

    save programs and reload saved programs.

    +
    + +

    You can (and should) save the contents of the activecode window.

    +
    +
    + + +

    type in Python source code.

    +
    + +

    You are not limited to running the examples that are already there. Try adding to them and creating your own.

    +
    +
    + + +

    execute Python code right in the text itself within the web browser.

    +
    + +

    The activecode interpreter will allow you type Python code into the textbox and then you can see it execute as the interpreter interprets and executes the source code.

    +
    +
    + + +

    receive a yes/no answer about whether your code is correct or not.

    +
    + +

    Although you can (and should) verify that your code is correct by examining its output, activecode will not directly tell you whether you have correctly implemented your program.

    +
    +
    +
    +
    + + +

    Codelens allows you to (select all that apply):

    +
    + + + +

    measure the speed of a program's execution.

    +
    + +

    In fact, codelens steps through each line one by one as you click, which is MUCH slower than the Python interpreter.

    +
    +
    + + +

    control the step by step execution of a program.

    +
    + +

    By using codelens, you can control the execution of a program step by step. You can even go backwards!

    +
    +
    + + +

    write and execute your own Python code.

    +
    + +

    Codelens works only for the pre-programmed examples.

    +
    +
    + + +

    execute the Python code that is in codelens.

    +
    + +

    By stepping forward through the Python code in codelens, you are executing the Python program.

    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/ThePythonProgrammingLanguage.ptx b/pretext/GeneralIntro/ThePythonProgrammingLanguage.ptx new file mode 100644 index 00000000..87c98aea --- /dev/null +++ b/pretext/GeneralIntro/ThePythonProgrammingLanguage.ptx @@ -0,0 +1,167 @@ + +
    + The Python Programming Language +

    The programming language you will be learning is Python. Python is an example + of a high-level language; other high-level languages you might have heard + of are C++, PHP, and Java.

    +

    As you might infer from the name high-level language, there are also + low-level languages, sometimes referred to as machine languages or assembly + languages. Loosely speaking, computers can only execute programs written in + low-level languages. Thus, programs written in a high-level language have to be + processed before they can run. This extra processing takes some time, which is + a small disadvantage of high-level languages. + However, the advantages to high-level languages are enormous.

    +

    First, it is much easier to program in a + high-level language. Programs written in a high-level language take less time + to write, they are shorter and easier to read, and they are more likely to be + correct. Second, high-level languages are portable, meaning that they can + run on different kinds of computers with few or no modifications. Low-level + programs can run on only one kind of computer and have to be rewritten to run + on another.

    +

    Due to these advantages, almost all programs are written in high-level + languages. Low-level languages are used only for a few specialized + applications.

    +

    Two kinds of programs process high-level languages into low-level languages: + interpreters and compilers. An interpreter reads a high-level program + and executes it, meaning that it does what the program says. It processes the + program a little at a time, alternately reading lines and performing + computations.

    + Interpret illustration +

    A compiler reads the program and translates it completely before the program + starts running. In this case, the high-level program is called the source + code, and the translated program is called the object code or the + executable. Once a program is compiled, you can execute it repeatedly + without further translation.

    + Compile illustration +

    Many modern languages use both processes. They are first compiled into a lower + level language, called byte code, and then interpreted by a program called + a virtual machine. Python uses both processes, but because of the way + programmers interact with it, it is usually considered an interpreted language.

    +

    For the core material in this book, you will not need to install + or run python natively on your computer. Instead, you'll be writing simple + programs and executing them right in your browser.

    +

    At some point, you will find it useful to have a complete python environment, rather than the limited environment + available in this online textbook. To do that, you will either + install python on your computer so that it can run natively, or use a remote server that provides either a + command line shell or a jupyter notebook environment.

    +

    + Check your understanding +

    + + +

    Source code is another name for:

    +
    + + + +

    the instructions in a program, written in a high-level language.

    +
    + +

    If the instructions are strored in a file, it is called the source code file.

    +
    +
    + + +

    the language that you are programming in (e.g., Python).

    +
    + +

    This language is simply called the programming language, or simply the language. Programs are writte in this language.

    +
    +
    + + +

    the environment/tool in which you are programming.

    +
    + +

    The environment may be called the IDE, or integrated development environment, though not always.

    +
    +
    + + +

    the number (or code) that you must input at the top of each program to tell the computer how to execute your program.

    +
    + +

    There is no such number that you must type in at the start of your program.

    +
    +
    +
    +
    + + +

    What is the difference between a high-level programming language and a low-level programming language?

    +
    + + + +

    It is high-level if you are standing and low-level if you are sitting.

    +
    + +

    In this case high and low have nothing to do with altitude.

    +
    +
    + + +

    It is high-level if you are programming for a computer and low-level if you are programming for a phone or mobile device.

    +
    + +

    High and low have nothing to do with the type of device you are programming for. Instead, look at what it takes to run the program written in the language.

    +
    +
    + + +

    It is high-level if the program must be processed before it can run, and low-level if the computer can execute it without additional processing.

    +
    + +

    Python is a high level language but must be interpreted into machine code (binary) before it can be executed.

    +
    +
    + + +

    It is high-level if it easy to program in and is very short; it is low-level if it is really hard to program in and the programs are really long.

    +
    + +

    While it is true that it is generally easier to program in a high-level language and programs written in a high-level language are usually shorter, this is not always the case.

    +
    +
    +
    +
    + + +

    Pick the best replacements for 1 and 2 in the following sentence: When comparing compilers and interpreters, a compiler is like 1 while an interpreter is like 2.

    +
    + + + +

    1 = a process, 2 = a function

    +
    + +

    Compiling is a software process, and running the interpreter is invoking a function, but how is a process different than a function?

    +
    +
    + + +

    1 = translating an entire book, 2 = translating a line at a time

    +
    + +

    Compilers take the entire source code and produce object code or the executable and interpreters execute the code line by line.

    +
    +
    + + +

    1 = software, 2 = hardware

    +
    + +

    Both compilers and interpreters are software.

    +
    +
    + + +

    1 = object code, 2 = byte code

    +
    + +

    Compilers can produce object code or byte code depending on the language. An interpreter produces neither.

    +
    +
    +
    +
    +
    diff --git a/pretext/GeneralIntro/WPPredictBeforeYouRun.ptx b/pretext/GeneralIntro/WPPredictBeforeYouRun.ptx new file mode 100644 index 00000000..b191aef3 --- /dev/null +++ b/pretext/GeneralIntro/WPPredictBeforeYouRun.ptx @@ -0,0 +1,14 @@ + +
    + 👩‍💻 Predict Before You Run! +

    You've run your first program! You'll be doing that a lot in this book and the programs will become increasingly + complicated. One way to help understand what is happening and learn programming is predicting the effect of running a + snippet of code before actually running the program. Later on in your development, you may make predictions about large + snippets of code, but for now you will typically be predicting the effect of executing a single line of code. A prediction + will either be about what gets printed out, or about the value of a variable, or that an error will occur.

    +

    A prediction is not a random guess. It is based on some explanation you have about what the current state of + variables is and about what you think certain commands in python do.

    +

    While you read the textbook you'll see chapters, pages, or snippets of text that begin with WP:. This denotes sections + that talk about the Way of the Programmer: advice or information that will help you to be a better programmer and make + better programs. Be on the lookout for other WP pages!

    +
    diff --git a/pretext/GeneralIntro/WPToUnderstandaProgramChangeIt.ptx b/pretext/GeneralIntro/WPToUnderstandaProgramChangeIt.ptx new file mode 100644 index 00000000..9d892f22 --- /dev/null +++ b/pretext/GeneralIntro/WPToUnderstandaProgramChangeIt.ptx @@ -0,0 +1,18 @@ + +
    + 👩‍💻 To Understand a Program, Change It! +

    To check your understanding or your predictions, you will run a program.

    +

    To check your understanding about the state of variables before your code snippet runs, add diagnostic print + statements that print out the types and values of variables. Add these print statements just before the code + snippet you are trying to understand.

    +

    If you made a prediction about the output that will be generated when the code snippet runs, then you can just run + the program. If, however, you made a prediction about a change that occurs in the value of a variable, you will + need to add an extra diagnostic print statement right after the line of code that you think should be changing that + variable.

    +

    The diagnostic print statements are temporary. Once you have verified that a program is doing what you think it's + doing, you will remove these extra print statements.

    +

    Even if you feel that you have a good grasp on the program though, we advise changing it at least a few times to see if you understand how it behaves in different situations. Sometimes you'll surprise yourself!

    +

    If you get any surprises, then you will want to revise your understanding or your predictions. If you were wrong + about the values or types of variables before the code snippet was run, you may want to revisit your understanding of + the previous code. Once you understand how that result came to be, you should make some changes to the program to make sure your new understanding is accurate.

    +
    diff --git a/pretext/GeneralIntro/intro-TheWayoftheProgram.ptx b/pretext/GeneralIntro/intro-TheWayoftheProgram.ptx new file mode 100644 index 00000000..b39027b8 --- /dev/null +++ b/pretext/GeneralIntro/intro-TheWayoftheProgram.ptx @@ -0,0 +1,55 @@ + +
    + Introduction: The Way of the Program +
    diff --git a/pretext/GeneralIntro/toctree.ptx b/pretext/GeneralIntro/toctree.ptx new file mode 100644 index 00000000..75f859e8 --- /dev/null +++ b/pretext/GeneralIntro/toctree.ptx @@ -0,0 +1,16 @@ + + + General Introduction + + + + + + + + + + + + + diff --git a/pretext/Inheritance/ChapterAssessment.ptx b/pretext/Inheritance/ChapterAssessment.ptx new file mode 100644 index 00000000..af404754 --- /dev/null +++ b/pretext/Inheritance/ChapterAssessment.ptx @@ -0,0 +1,276 @@ + +
    + Chapter Assessment + + +

    The class, Pokemon, is provided below and describes a Pokemon and its leveling and evolving characteristics. An instance of the class is one pokemon that you create.

    +

    Grass_Pokemon is a subclass that inherits from Pokemon but changes some aspects, for instance, the boost values are different.

    +

    For the subclass Grass_Pokemon, add another method called action that returns the string "[name of pokemon] knows a lot of different moves!". Create an instance of this class with the name as "Belle". Assign this instance to the variable p1.

    +
    + + +class Pokemon(object): + attack = 12 + defense = 10 + health = 15 + p_type = "Normal" + + def __init__(self, name, level = 5): + self.name = name + self.level = level + + def train(self): + self.update() + self.attack_up() + self.defense_up() + self.health_up() + self.level = self.level + 1 + if self.level%self.evolve == 0: + return self.level, "Evolved!" + else: + return self.level + + def attack_up(self): + self.attack = self.attack + self.attack_boost + return self.attack + + def defense_up(self): + self.defense = self.defense + self.defense_boost + return self.defense + + def health_up(self): + self.health = self.health + self.health_boost + return self.health + + def update(self): + self.health_boost = 5 + self.attack_boost = 3 + self.defense_boost = 2 + self.evolve = 10 + + def __str__(self): + self.update() + return "Pokemon name: {}, Type: {}, Level: {}".format(self.name, self.p_type, self.level) + +class Grass_Pokemon(Pokemon): + attack = 15 + defense = 14 + health = 12 + + def update(self): + self.health_boost = 6 + self.attack_boost = 2 + self.defense_boost = 3 + self.evolve = 12 + + def moves(self): + self.p_moves = ["razor leaf", "synthesis", "petal dance"] + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(p1.action(), "Belle knows a lot of different moves!", "Testing that action method is correct and p1 assigned to correct value") + +myTests().main() + + +
    + + +

    Modify the Grass_Pokemon subclass so that the attack strength for Grass_Pokemon instances does not change until they reach level 10. At level 10 and up, their attack strength should increase by the attack_boost amount when they are trained.

    +

    To test, create an instance of the class with the name as "Bulby". Assign the instance to the variable p2. Create another instance of the Grass_Pokemon class with the name set to "Pika" and assign that instance to the variable p3. Then, use Grass_Pokemon methods to train the p3 Grass_Pokemon instance until it reaches at least level 10.

    +
    + + +class Pokemon(object): + attack = 12 + defense = 10 + health = 15 + p_type = "Normal" + + def __init__(self, name, level = 5): + self.name = name + self.level = level + + def train(self): + self.update() + self.attack_up() + self.defense_up() + self.health_up() + self.level = self.level + 1 + if self.level%self.evolve == 0: + return self.level, "Evolved!" + else: + return self.level + + def attack_up(self): + self.attack = self.attack + self.attack_boost + return self.attack + + def defense_up(self): + self.defense = self.defense + self.defense_boost + return self.defense + + def health_up(self): + self.health = self.health + self.health_boost + return self.health + + def update(self): + self.health_boost = 5 + self.attack_boost = 3 + self.defense_boost = 2 + self.evolve = 10 + + def __str__(self): + return "Pokemon name: {}, Type: {}, Level: {}".format(self.name, self.p_type, self.level) + +class Grass_Pokemon(Pokemon): + attack = 15 + defense = 14 + health = 12 + p_type = "Grass" + + def update(self): + self.health_boost = 6 + self.attack_boost = 2 + self.defense_boost = 3 + self.evolve = 12 + + def moves(self): + self.p_moves = ["razor leaf", "synthesis", "petal dance"] + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(p2.__str__(), "Pokemon name: Bulby, Type: Grass, Level: 5", "Testing that p2 is assigned to correct value.") + def testOneB(self): + self.assertTrue(p3.attack_up() >= 17, "Testing that attack value is assigned to correct value at level 10.") + +myTests().main() + + +
    + + +

    Along with the Pokemon parent class, we have also provided several subclasses. Write another method in the parent class that will be inherited by the subclasses. Call it opponent. It should return which type of pokemon the current type is weak and strong against, as a tuple.

    +

    +

      +
    • +

      Grass is weak against Fire and strong against Water

      +
    • +
    • +

      Ghost is weak against Dark and strong against Psychic

      +
    • +
    • +

      Fire is weak against Water and strong against Grass

      +
    • +
    • +

      Flying is weak against Electric and strong against Fighting

      +
    • +
    +

    +

    For example, if the p_type of the subclass is 'Grass', .opponent() should return the tuple ('Fire', 'Water')

    +
    + + +class Pokemon(): + attack = 12 + defense = 10 + health = 15 + p_type = "Normal" + + def __init__(self, name,level = 5): + self.name = name + self.level = level + self.weak = "Normal" + self.strong = "Normal" + + def train(self): + self.update() + self.attack_up() + self.defense_up() + self.health_up() + self.level = self.level + 1 + if self.level%self.evolve == 0: + return self.level, "Evolved!" + else: + return self.level + + def attack_up(self): + self.attack = self.attack + self.attack_boost + return self.attack + + def defense_up(self): + self.defense = self.defense + self.defense_boost + return self.defense + + def health_up(self): + self.health = self.health + self.health_boost + return self.health + + def update(self): + self.health_boost = 5 + self.attack_boost = 3 + self.defense_boost = 2 + self.evolve = 10 + + def __str__(self): + self.update() + return "Pokemon name: {}, Type: {}, Level: {}".format(self.name, self.p_type, self.level) + +class Grass_Pokemon(Pokemon): + attack = 15 + defense = 14 + health = 12 + p_type = "Grass" + + def update(self): + self.health_boost = 6 + self.attack_boost = 2 + self.defense_boost = 3 + self.evolve = 12 + +class Ghost_Pokemon(Pokemon): + p_type = "Ghost" + + def update(self): + self.health_boost = 3 + self.attack_boost = 4 + self.defense_boost = 3 + +class Fire_Pokemon(Pokemon): + p_type = "Fire" + +class Flying_Pokemon(Pokemon): + p_type = "Flying" + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOneA(self): + self.assertEqual(Grass_Pokemon("Buggy").opponent(), ("Fire", "Water"), "Testing that Grass weak and strong are assigned to correct values.") + def testOneB(self): + self.assertEqual(Fire_Pokemon("Buggy").opponent(), ("Water", "Grass"), "Testing that Fire weak and strong are assigned to correct values.") + def testOneC(self): + self.assertEqual(Ghost_Pokemon("Buggy").opponent(), ("Dark", "Psychic"), "Testing that Ghost weak and strong are assigned to correct values.") + def testOneD(self): + self.assertEqual(Flying_Pokemon("Buggy").opponent(), ("Electric", "Fighting"), "Testing that Flying weak and strong are assigned to correct values.") + +myTests().main() + + +
    +
    diff --git a/pretext/Inheritance/Exercises.ptx b/pretext/Inheritance/Exercises.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Inheritance/Exercises.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Inheritance/InvokingSuperMethods.ptx b/pretext/Inheritance/InvokingSuperMethods.ptx new file mode 100644 index 00000000..1aecf0ab --- /dev/null +++ b/pretext/Inheritance/InvokingSuperMethods.ptx @@ -0,0 +1,182 @@ + +
    + Invoking the Parent Class's Method +

    Sometimes the parent class has a useful method, but you just need to execute a little extra code when running the subclass's method. You can override the parent class's method in the subclass's method with the same name, but also invoke the parent class's method. Here's how.

    +

    Say you wanted the Dog subclass of Pet to say Arf! Thanks! when the feed method is called, as well as executing the code in the original method.

    +

    Here's the original Pet class again.

    + + +from random import randrange + +# Here's the original Pet class +class Pet(): + boredom_decrement = 4 + hunger_decrement = 6 + boredom_threshold = 5 + hunger_threshold = 10 + sounds = ['Mrrp'] + def __init__(self, name = "Kitty"): + self.name = name + self.hunger = randrange(self.hunger_threshold) + self.boredom = randrange(self.boredom_threshold) + self.sounds = self.sounds[:] # copy the class attribute, so that when we make changes to it, we won't affect the other Pets in the class + + def clock_tick(self): + self.boredom += 1 + self.hunger += 1 + + def mood(self): + if self.hunger <= self.hunger_threshold and self.boredom <= self.boredom_threshold: + return "happy" + elif self.hunger > self.hunger_threshold: + return "hungry" + else: + return "bored" + + def __str__(self): + state = " I'm " + self.name + ". " + state += " I feel " + self.mood() + ". " + # state += "Hunger %d Boredom %d Words %s" % (self.hunger, self.boredom, self.sounds) + return state + + def hi(self): + print(self.sounds[randrange(len(self.sounds))]) + self.reduce_boredom() + + def teach(self, word): + self.sounds.append(word) + self.reduce_boredom() + + def feed(self): + self.reduce_hunger() + + def reduce_hunger(self): + self.hunger = max(0, self.hunger - self.hunger_decrement) + + def reduce_boredom(self): + self.boredom = max(0, self.boredom - self.boredom_decrement) + + +

    And here's a subclass that overrides feed() by invoking the the parent class's feed() method; it then also executes an extra line of code. Note the somewhat inelegant way of invoking the parent class' method. We explicitly refer to Pet.feed to get the method/function object. We invoke it with parentheses. However, since we are not invoking the method the normal way, with <obj>.methodname, we have to explicitly pass an instance as the first parameter. In this case, the variable self in Dog.feed() will be bound to an instance of Dog, and so we can just pass self: Pet.feed(self).

    + + +from random import randrange + +class Dog(Pet): + sounds = ['Woof', 'Ruff'] + + def feed(self): + Pet.feed(self) + print("Arf! Thanks!") + +d1 = Dog("Astro") + +d1.feed() + + + +

    There's a better way to invoke a superclass's method. Unfortunately, the implementation of python in our ActiveCode windows doesn't support it, so we aren't using it here. In that alternative method, we would call super().feed(). This is nice because it's easier to read, and also because it puts the specification of the class that Dog inherits from in just one place, class Dog(Pet). Elsewhere, you just refer to super() and python takes care of looking up that the parent (super) class of Dog is Pet.

    +
    +

    This technique is very often used with the __init__ method for a subclass. Suppose that some extra instance variables are defined for the subclass. When you invoke the constructor, you pass all the regular parameters for the parent class, plus the extra ones for the subclass. The subclass' __init__ method then stores the extra parameters in instance variables and calls the parent class' __init__ method to store the common parameters in instance variables and do any other initialization that it normally does.

    +

    Let's say we want to create a subclass of Pet, called Bird, and we want it to take an extra parameter, chirp_number, with a default value of 2, and have an extra instance variable, self.chirp_number. Then, we'll use this in the hi method to make more than one sound.

    + + +class Bird(Pet): + sounds = ["chirp"] + def __init__(self, name="Kitty", chirp_number=2): + Pet.__init__(self, name) # call the parent class's constructor + # basically, call the SUPER -- the parent version -- of the constructor, with all the parameters that it needs. + self.chirp_number = chirp_number # now, also assign the new instance variable + + def hi(self): + for i in range(self.chirp_number): + print(self.sounds[randrange(len(self.sounds))]) + self.reduce_boredom() + +b1 = Bird('tweety', 5) +b1.teach("Polly wanna cracker") +b1.hi() + + +

    + Check your understanding +

    + + +

    What will print when print(b1.sounds) is run?

    +
    + + + +

    5

    +
    + +

    This would print if the code was print(b1.chirp_number).

    +
    +
    + + +

    ["Mrrp"]

    +
    + +

    We set b1 to be Bird('tweety', 5) above. Bird is a subclass of Pet, which has ["Mrrp"] for sounds, but Bird has a different value for that class variable. The interpreter looks in the subclass first.

    +
    +
    + + +

    ["chirp"]

    +
    + +

    The interpeter finds the value in the class variable for the class Bird.

    +
    +
    + + +

    Error

    +
    + +

    We ran set b1 to be Bird('tweety', 5) above. Bird has a value set for the attribute sounds.

    +
    +
    +
    +
    + + +

    For the Dog class defined in the earlier activecode window, what would happen when d1.feed() is run if the Pet.feed(self) line was deleted?

    +
    + + + +

    Error when invoked

    +
    + +

    Since we are no longer calling the parent method in the subclass method definition, the actions defined in the parent method feed will not happen, and only Arf! Thanks! will be printed.

    +
    +
    + + +

    The string would not print out but d1 would have its hunger reduced.

    +
    + +

    Remember that the Python interpreter checks for the existence of feed in the Dog class and looks for feed in Pet only if it isn't found in Dog.

    +
    +
    + + +

    The string would print but d1 would not have its hunger reduced.

    +
    + +

    Since we are no longer calling the parent Pet class's method in the Dog subclass's method definition, the class definition will override the parent method.

    +
    +
    + + +

    Nothing would be different. It is the same as the current code.

    +
    + +

    Remember that the Python interpreter checks for the existence of feed in the Dog class and looks for feed in Pet only if it isn't found in Dog.

    +
    +
    +
    +
    +
    diff --git a/pretext/Inheritance/OverrideMethods.ptx b/pretext/Inheritance/OverrideMethods.ptx new file mode 100644 index 00000000..6c2e7bfc --- /dev/null +++ b/pretext/Inheritance/OverrideMethods.ptx @@ -0,0 +1,99 @@ + +
    + Overriding Methods +

    If a method is defined for a class, and also defined for its parent class, the subclass' method is called and not the parent's. This follows from the rules for looking up attributes that you saw in the previous section.

    +

    We can use the same idea to understand overriding methods.

    +

    Let's return to our idea of making Cats, Dogs, and other pets generate a string for their mood differently.

    +

    Here's the original Pet class again.

    + + +from random import randrange + +# Here's the original Pet class +class Pet(): + boredom_decrement = 4 + hunger_decrement = 6 + boredom_threshold = 5 + hunger_threshold = 10 + sounds = ['Mrrp'] + def __init__(self, name = "Kitty"): + self.name = name + self.hunger = randrange(self.hunger_threshold) + self.boredom = randrange(self.boredom_threshold) + self.sounds = self.sounds[:] # copy the class attribute, so that when we make changes to it, we won't affect the other Pets in the class + + def clock_tick(self): + self.boredom += 1 + self.hunger += 1 + + def mood(self): + if self.hunger <= self.hunger_threshold and self.boredom <= self.boredom_threshold: + return "happy" + elif self.hunger > self.hunger_threshold: + return "hungry" + else: + return "bored" + + def __str__(self): + state = " I'm " + self.name + ". " + state += " I feel " + self.mood() + ". " + # state += "Hunger %d Boredom %d Words %s" % (self.hunger, self.boredom, self.sounds) + return state + + def hi(self): + print(self.sounds[randrange(len(self.sounds))]) + self.reduce_boredom() + + def teach(self, word): + self.sounds.append(word) + self.reduce_boredom() + + def feed(self): + self.reduce_hunger() + + def reduce_hunger(self): + self.hunger = max(0, self.hunger - self.hunger_decrement) + + def reduce_boredom(self): + self.boredom = max(0, self.boredom - self.boredom_decrement) + + +

    Now let's make two subclasses, Dog and Cat. Dogs are always happy unless they are bored and hungry. Cats, on the other hand, are happy only if they are fed and if their boredom level is in a narrow range and, even then, only with probability 1/2.

    + + +class Cat(Pet): + sounds = ['Meow'] + + def mood(self): + if self.hunger > self.hunger_threshold: + return "hungry" + if self.boredom <2: + return "grumpy; leave me alone" + elif self.boredom > self.boredom_threshold: + return "bored" + elif randrange(2) == 0: + return "randomly annoyed" + else: + return "happy" + +class Dog(Pet): + sounds = ['Woof', 'Ruff'] + + def mood(self): + if (self.hunger > self.hunger_threshold) and (self.boredom > self.boredom_threshold): + return "bored and hungry" + else: + return "happy" + +c1 = Cat("Fluffy") +d1 = Dog("Astro") + +c1.boredom = 1 +print(c1.mood()) +c1.boredom = 3 +for i in range(10): + print(c1.mood()) +print(d1.mood()) + + +
    diff --git a/pretext/Inheritance/TamagotchiRevisited.ptx b/pretext/Inheritance/TamagotchiRevisited.ptx new file mode 100644 index 00000000..a7262f87 --- /dev/null +++ b/pretext/Inheritance/TamagotchiRevisited.ptx @@ -0,0 +1,189 @@ + +
    + Tamagotchi Revisited +

    Using what we know about class inheritance, we can make a new version of the Tamagotchi game, where you can adopt different types of pets that are slightly different from one another.

    +

    And now we can play the Tamagotchi game with some small changes, such that we can adopt different types of pets.

    + + +import sys +sys.setExecutionLimit(60000) +from random import randrange + +class Pet(object): + boredom_decrement = 4 + hunger_decrement = 6 + boredom_threshold = 5 + hunger_threshold = 10 + sounds = ['Mrrp'] + def __init__(self, name = "Kitty"): + self.name = name + self.hunger = randrange(self.hunger_threshold) + self.boredom = randrange(self.boredom_threshold) + self.sounds = self.sounds[:] # copy the class attribute, so that when we make changes to it, we won't affect the other Pets in the class + + def clock_tick(self): + self.boredom += 1 + self.hunger += 1 + + def mood(self): + if self.hunger <= self.hunger_threshold and self.boredom <= self.boredom_threshold: + return "happy" + elif self.hunger > self.hunger_threshold: + return "hungry" + else: + return "bored" + + def __str__(self): + state = " I'm " + self.name + ". " + state += " I feel " + self.mood() + ". " + # state += "Hunger %d Boredom %d Words %s" % (self.hunger, self.boredom, self.sounds) + return state + + def hi(self): + print(self.sounds[randrange(len(self.sounds))]) + self.update_boredom() + + def teach(self, word): + self.sounds.append(word) + self.update_boredom() + + def feed(self): + self.update_hunger() + + def update_hunger(self): + self.hunger = max(0, self.hunger - self.hunger_decrement) + + def update_boredom(self): + self.boredom = max(0, self.boredom - self.boredom_decrement) + +class Cat(Pet): + sounds = ['Meow'] + + def mood(self): + if self.hunger > self.hunger_threshold: + return "hungry" + if self.boredom <2: + return "grumpy; leave me alone" + elif self.boredom > self.boredom_threshold: + return "bored" + elif randrange(2) == 0: + return "randomly annoyed" + else: + return "happy" + +class Dog(Pet): + sounds = ['Woof', 'Ruff'] + + def mood(self): + if (self.hunger > self.hunger_threshold) and (self.boredom > self.boredom_threshold): + return "bored and hungry" + else: + return "happy" + + def feed(self): + Pet.feed(self) + print("Arf! Thanks!") + +class Bird(Pet): + sounds = ["chirp"] + def __init__(self, name="Kitty", chirp_number=2): + Pet.__init__(self, name) # call the parent class's constructor + # basically, call the SUPER -- the parent version -- of the constructor, with all the parameters that it needs. + self.chirp_number = chirp_number # now, also assign the new instance variable + + def hi(self): + for i in range(self.chirp_number): + print(self.sounds[randrange(len(self.sounds))]) + self.update_boredom() + +class Lab(Dog): + def fetch(self): + return "I found the tennis ball!" + + def hi(self): + print(self.fetch()) + print(self.sounds[randrange(len(self.sounds))]) + +class Poodle(Dog): + def dance(self): + return "Dancin' in circles like poodles do." + + def hi(self): + print(self.dance()) + Dog.hi(self) + +def whichone(petlist, name): + for pet in petlist: + if pet.name == name: + return pet + return None # no pet matched + +pet_types = {'dog': Dog, 'lab': Lab, 'poodle': Poodle, 'cat': Cat, 'bird': Bird} +def whichtype(adopt_type="general pet"): + return pet_types.get(adopt_type.lower(), Pet) + +def play(): + animals = [] + + option = "" + base_prompt = """ + Quit + Adopt <petname_with_no_spaces> <pet_type - choose dog, cat, lab, poodle, bird, or another unknown pet type> + Greet <petname> + Teach <petname> <word> + Feed <petname> + + Choice: """ + feedback = "" + while True: + action = input(feedback + "\n" + base_prompt) + feedback = "" + words = action.split() + if len(words) > 0: + command = words[0] + else: + command = None + if command == "Quit": + print("Exiting...") + return + elif command == "Adopt" and len(words) > 1: + if whichone(animals, words[1]): + feedback += "You already have a pet with that name\n" + else: + # figure out which class it should be + if len(words) > 2: + Cl = whichtype(words[2]) + else: + Cl = Pet + # Make an instance of that class and append it + animals.append(Cl(words[1])) + elif command == "Greet" and len(words) > 1: + pet = whichone(animals, words[1]) + if not pet: + feedback += "I didn't recognize that pet name. Please try again.\n" + print() + else: + pet.hi() + elif command == "Teach" and len(words) > 2: + pet = whichone(animals, words[1]) + if not pet: + feedback += "I didn't recognize that pet name. Please try again." + else: + pet.teach(words[2]) + elif command == "Feed" and len(words) > 1: + pet = whichone(animals, words[1]) + if not pet: + feedback += "I didn't recognize that pet name. Please try again." + else: + pet.feed() + else: + feedback+= "I didn't understand that. Please try again." + + for pet in animals: + pet.clock_tick() + feedback += "\n" + pet.__str__() + +play() + + +
    diff --git a/pretext/Inheritance/chapterProject.ptx b/pretext/Inheritance/chapterProject.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Inheritance/chapterProject.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Inheritance/inheritVarsAndMethods.ptx b/pretext/Inheritance/inheritVarsAndMethods.ptx new file mode 100644 index 00000000..b415807c --- /dev/null +++ b/pretext/Inheritance/inheritVarsAndMethods.ptx @@ -0,0 +1,333 @@ +
    + Inheriting Variables and Methods + + + + Mechanics of Defining a Subclass +

    We said that inheritance provides us a more elegant way of, for example, creating Dog and Cat types, rather than making a very complex Pet class. In the abstract, this is pretty intuitive: all pets have certain things, but dogs are different from cats, which are different from birds. Going a step further, a Collie dog is different from a Labrador dog, for example. Inheritance provides us with an easy and elegant way to represent these differences.

    +

    Basically, it works by defining a new class, and using a special syntax to show what the new sub-class inherits from a super-class. So if you wanted to define a Dog class as a special kind of Pet, you would say that the Dog type inherits from the Pet type. In the definition of the inherited class, you only need to specify the methods and instance variables that are different from the parent class (the parent class, or the superclass, is what we may call the class that is inherited from. In the example we're discussing, Pet would be the superclass of Dog or Cat).

    +

    Here is an example. Say we want to define a class Cat that inherits from Pet. Assume we have the Pet class that we defined earlier.

    +

    We want the Cat type to be exactly the same as Pet, except we want the sound cats to start out knowing meow instead of mrrp, and we want the Cat class to have its own special method called chasing_rats, which only Cat s have.

    +

    For reference, here's the original Tamagotchi code

    + + + +from random import randrange + +# Here's the original Pet class +class Pet(): + boredom_decrement = 4 + hunger_decrement = 6 + boredom_threshold = 5 + hunger_threshold = 10 + sounds = ['Mrrp'] + def __init__(self, name = "Kitty"): + self.name = name + self.hunger = randrange(self.hunger_threshold) + self.boredom = randrange(self.boredom_threshold) + self.sounds = self.sounds[:] # copy the class attribute, so that when we make changes to it, we won't affect the other Pets in the class + + def clock_tick(self): + self.boredom += 1 + self.hunger += 1 + + def mood(self): + if self.hunger <= self.hunger_threshold and self.boredom <= self.boredom_threshold: + return "happy" + elif self.hunger > self.hunger_threshold: + return "hungry" + else: + return "bored" + + def __str__(self): + state = " I'm " + self.name + ". " + state += " I feel " + self.mood() + ". " + # state += "Hunger %d Boredom %d Words %s" % (self.hunger, self.boredom, self.sounds) + return state + + def hi(self): + print(self.sounds[randrange(len(self.sounds))]) + self.reduce_boredom() + + def teach(self, word): + self.sounds.append(word) + self.reduce_boredom() + + def feed(self): + self.reduce_hunger() + + def reduce_hunger(self): + self.hunger = max(0, self.hunger - self.hunger_decrement) + + def reduce_boredom(self): + self.boredom = max(0, self.boredom - self.boredom_decrement) + +# Here's the new definition of class Cat, a subclass of Pet. +class Cat(Pet): # the class name that the new class inherits from goes in the parentheses, like so. + sounds = ['Meow'] + + def chasing_rats(self): + return "What are you doing, Pinky? Taking over the world?!" + + +

    All we need is the few extra lines at the bottom of the ActiveCode window! The elegance of inheritance allows us to specify just the differences in the new, inherited class. In that extra code, we make sure the Cat class inherits from the Pet class. We do that by putting the word Pet in parentheses, class Cat(Pet):. In the definition of the class Cat, we only need to define the things that are different from the ones in the Pet class.

    +

    In this case, the only difference is that the class variable sounds starts out with the string "Meow" instead of the string "mrrp", and there is a new method chasing_rats.

    +

    We can still use all the Pet methods in the Cat class, this way. You can call the __str__ method on an instance of Cat to print an instance of Cat, the same way you could call it on an instance of Pet, and the same is true for the hi method – it's the same for instances of Cat and Pet. But the chasing_rats method is special: it's only usable on Cat instances, because Cat is a subclass of Pet which has that additional method.

    +

    In the original Tamagotchi game in the last chapter, you saw code that created instances of the Pet class. Now let's write a little bit of code that uses instances of the Pet class AND instances of the Cat class.

    + + + +p1 = Pet("Fido") +print(p1) # we've seen this stuff before! + +p1.feed() +p1.hi() +print(p1) + +cat1 = Cat("Fluffy") +print(cat1) # this uses the same __str__ method as the Pets do + +cat1.feed() # Totally fine, because the cat class inherits from the Pet class! +cat1.hi() +print(cat1) + +print(cat1.chasing_rats()) + +#print(p1.chasing_rats()) # This line will give us an error. The Pet class doesn't have this method! + + +

    And you can continue the inheritance tree. We inherited Cat from Pet. Now say we want a subclass of Cat called Cheshire. A Cheshire cat should inherit everything from Cat, which means it inherits everything that Cat inherits from Pet, too. But the Cheshire class has its own special method, smile.

    + + + +class Cheshire(Cat): # this inherits from Cat, which inherits from Pet + + def smile(self): # this method is specific to instances of Cheshire + print(":D :D :D") + +# Let's try it with instances. +cat1 = Cat("Fluffy") +cat1.feed() # Totally fine, because the cat class inherits from the Pet class! +cat1.hi() # Uses the special Cat hello. +print(cat1) + +print(cat1.chasing_rats()) + +new_cat = Cheshire("Pumpkin") # create a Cheshire cat instance with name "Pumpkin" +new_cat.hi() # same as Cat! +new_cat.chasing_rats() # OK, because Cheshire inherits from Cat +new_cat.smile() # Only for Cheshire instances (and any classes that you make inherit from Cheshire) + +# cat1.smile() # This line would give you an error, because the Cat class does not have this method! + +# None of the subclass methods can be used on the parent class, though. +p1 = Pet("Teddy") +p1.hi() # just the regular Pet hello +#p1.chasing_rats() # This will give you an error -- this method doesn't exist on instances of the Pet class. +#p1.smile() # This will give you an error, too. This method does not exist on instances of the Pet class. + + +
    + + How the interpreter looks up attributes +

    So what is happening in the Python interpreter when you write programs with classes, subclasses, and instances of both parent classes and subclasses?

    +

    This is how the interpreter looks up attributes:

    +

      +
    1. +

      First, it checks for an instance variable or an instance method by the name it's looking for.

      +
    2. +
    3. +

      If an instance variable or method by that name is not found, it checks for a class variable. (See the for an explanation of the difference between instance variables and class variables.)

      +
    4. +
    5. +

      If no class variable is found, it looks for a class variable in the parent class.

      +
    6. +
    7. +

      If no class variable is found, the interpreter looks for a class variable in THAT class's parent (the grandparent class).

      +
    8. +
    9. +

      This process goes on until the last ancestor is reached, at which point Python will signal an error.

      +
    10. +

    +

    Let's look at this with respect to some code.

    +

    Say you write the lines:

    + +new_cat = Cheshire("Pumpkin") +print(new_cat.name) + +

    In the second line, after the instance is created, Python looks for the instance variable name in the new_cat instance. In this case, it exists. The name on this instance of Cheshire is Pumpkin. There you go!

    +

    When the following lines of code are written and executed:

    + +cat1 = Cat("Sepia") +cat1.hi() + +

    The Python interpreter looks for hi in the instance of Cat. It does not find it, because there's no statement of the form cat1.hi = .... (Be careful here – if you had set an instance variable on Cat called hi it would be a bad idea, because you would not be able to use the method that it inherited anymore. We'll see more about this later.)

    +

    Then it looks for hi as a class variable (or method) in the class Cat, and still doesn't find it.

    +

    Next, it looks for a class variable hi on the parent class of Cat, Pet. It finds that – there's a method called hi on the class Pet. Because of the () after hi, the method is invoked. All is well.

    +

    However, for the following, it won't go so well

    + +p1 = Pet("Teddy") +p1.chasing_rats() + +

    The Python interpreter looks for an instance variable or method called chasing_rats on the Pet class. It doesn't exist. Pet has no parent classes, so Python signals an error.

    +

    Check your understanding

    + + + + +

    After you run the code, new_cat = Cheshire("Cat1"), how many instance variables exist for the new_cat instance of Cheshire?

    + +
    + + + + +

    1

    +
    + +

    Neither Cheshire nor Cat defines an __init__ constructor method, so the grandaprent class, Pet, will have it's __init__ method called. Check how many instance variables it sets.

    +
    +
    + + + +

    2

    +
    + +

    Neither Cheshire nor Cat defines an __init__ constructor method, so the grandaprent class, Pet, will have it's __init__ method called. Check how many instance variables it sets.

    +
    +
    + + + +

    3

    +
    + +

    Neither Cheshire nor Cat defines an __init__ constructor method, so the grandaprent class, Pet, will have it's __init__ method called. Check how many instance variables it sets.

    +
    +
    + + + +

    4

    +
    + +

    Neither Cheshire nor Cat defines an __init__ constructor method, so the grandaprent class, Pet, will have it's __init__ method called. That constructor method sets the instance variables name, hunger, boredom, and sounds.

    +
    +
    +
    + +
    + + + + +

    What would print after running the following code:

    + +new_cat = Cheshire("Cat1") +class Siamese(Cat): + def song(self): + print("I am a purrrfect creature.") +another_cat = Siamese("Cat2") +another_cat.song() + + +
    + + + + +

    I am a purrrfect creature.

    +
    + +

    another_cat is an instance of Siamese, so its song() method is invoked.

    +
    +
    + + + +

    Error

    +
    + +

    another_cat is an instance of Siamese, so its song() method is invoked.

    +
    +
    + + + +

    Pumpkin

    +
    + +

    This would print if the statement was print new_cat.name.

    +
    +
    + + + +

    Nothing. There's no print statement.

    +
    + +

    There is a print statement in the method definition.

    +
    +
    +
    + +
    + + + + +

    What would print after running the following code:

    + +new_cat = Cheshire("Cat1") +class Siamese(Cat): + def song(self): + print("I am a purrrfect creature.") +another_cat = Siamese("Cat2") +new_cat.song() + + +
    + + + + +

    We are Siamese if you please. We are Siamese if you don't please.

    +
    + +

    You cannot invoke methods defined in the Siamese class on an instance of the Cheshire class. Both are subclasses of Cat, but Cheshire is not a subclass of Siamese, so it doesn't inherit its methods.

    +
    +
    + + + +

    Error

    +
    + +

    You cannot invoke methods defined in the Siamese class on an instance of the Cheshire class. Both are subclasses of Cat, but Cheshire is not a subclass of Siamese, so it doesn't inherit its methods.

    +
    +
    + + + +

    Cat1

    +
    + +

    This would print if the statement was print new_cat.name.

    +
    +
    + + + +

    Nothing. There's no print statement.

    +
    + +

    There is a print statement in the method definition for Siamese.

    +
    +
    +
    + +
    +
    +
    + diff --git a/pretext/Inheritance/intro.ptx b/pretext/Inheritance/intro.ptx new file mode 100644 index 00000000..51e91ae9 --- /dev/null +++ b/pretext/Inheritance/intro.ptx @@ -0,0 +1,86 @@ + +
    + Introduction: Class Inheritance +

    Classes can inherit methods and class variables from other classes. We'll see the mechanics of how this works in subsequent sections. First, however, let's motivate why this might be valuable. It turns out that inheritance doesn't let you do anything that you couldn't do without it, but it makes some things a lot more elegant. You will also find it's useful when someone else has defined a class in a module or library, and you just want to override a few things without having to reimplement everything they've done.

    +

    Consider our Tamagotchi game. Suppose we wanted to make some different kinds of pets that have the same structure as other pets, but have some different attributes or behave a little differently. For example, suppose that dog pets should show their emotional state a little differently than cats or act differently when they are hungry or when they are asked to fetch something.

    +

    You could implement this by making an instance variable for the pet type and dispatching on that instance variable in various methods.

    + + +from random import randrange + +class Pet(): + boredom_decrement = 4 + hunger_decrement = 6 + boredom_threshold = 5 + hunger_threshold = 10 + sounds = ['Mrrp'] + def __init__(self, name = "Kitty", pet_type="dog"): + self.name = name + self.hunger = randrange(self.hunger_threshold) + self.boredom = randrange(self.boredom_threshold) + self.sounds = self.sounds[:] # copy the class attribute, so that when we make changes to it, we won't affect the other Pets in the class + self.pet_type = pet_type + + def clock_tick(self): + self.boredom += 1 + self.hunger += 1 + + def mood(self): + if self.hunger <= self.hunger_threshold and self.boredom <= self.boredom_threshold: + if self.pet_type == "dog": # if the pet is a dog, it will express its mood in different ways from a cat or any other type of animal + return "happy" + elif self.pet_type == "cat": + return "happy, probably" + else: + return "HAPPY" + elif self.hunger > self.hunger_threshold: + if self.pet_type == "dog": # same for hunger -- dogs and cats will express their hunger a little bit differently in this version of the class definition + return "hungry, arf" + elif self.pet_type == "cat": + return "hungry, meeeeow" + else: + return "hungry" + else: + return "bored" + + def __str__(self): + state = " I'm " + self.name + ". " + state += " I feel " + self.mood() + ". " + return state + + def hi(self): + print(self.sounds[randrange(len(self.sounds))]) + self.reduce_boredom() + + def teach(self, word): + self.sounds.append(word) + self.reduce_boredom() + + def feed(self): + self.reduce_hunger() + + def reduce_hunger(self): + self.hunger = max(0, self.hunger - self.hunger_decrement) + + def reduce_boredom(self): + self.boredom = max(0, self.boredom - self.boredom_decrement) + + +
    +
  • + That code is exactly the same as the code defining the <c>Pet</c> class that you saw in the <xref ref="classes_tamagotchi"/> section, except that we've added a few things. +

    +

      +
    • +

      A new input to the constructor – the pet_type input parameter, which defaults to "dog", and the self.pet_type instance variable.

      +
    • +
    • +

      if..elif..else in the self.mood() method, such that different types of pets (a dog, a cat, or any other type of animal) express their moods and their hunger in slightly different ways.

      +
    • +
    +

    +
  • +
    +

    But that's not an elegant way to do it. It obscures the parts of being a pet that are common to all pets and it buries the unique stuff about being a dog or a cat in the middle of the mood method. What if you also wanted a dog to reduce boredom at a different rate than a cat, and you wanted a bird pet to be different still? Here, we've only implemented dogs, cats, and other – but you can imagine the possibilities.

    +

    If there were lots of different types of pets, those methods would start to have long and complex if..elif..elif code clauses, which can be confusing. And you'd need that in every method where the behavior was different for different types of pets. Class inheritance will give us a more elegant way to do it.

    +
    diff --git a/pretext/Inheritance/toctree.ptx b/pretext/Inheritance/toctree.ptx new file mode 100644 index 00000000..04366b69 --- /dev/null +++ b/pretext/Inheritance/toctree.ptx @@ -0,0 +1,12 @@ + + + Inheritance + + + + + + + + + diff --git a/pretext/Iteration/Exercises.ptx b/pretext/Iteration/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Iteration/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Iteration/FlowofExecutionoftheforLoop.ptx b/pretext/Iteration/FlowofExecutionoftheforLoop.ptx new file mode 100644 index 00000000..3b2d9a04 --- /dev/null +++ b/pretext/Iteration/FlowofExecutionoftheforLoop.ptx @@ -0,0 +1,33 @@ + +

    + Flow of Execution of the for Loop +

    As a program executes, the interpreter always keeps track of which statement is + about to be executed. We call this the control flow, or the flow of + execution of the program. When humans execute programs, they often use their + finger to point to each statement in turn. So you could think of control flow + as Python's moving finger.

    +

    Control flow until now has been strictly top to bottom, one statement at a + time. We call this type of control sequential. + Sequential flow of control is always assumed to be the default behavior for a computer program. + The for statement changes this.

    +

    Flow of control is often easy to visualize and understand if we draw a flowchart. + This flowchart shows the exact steps and logic of how the for statement executes.

    + + +

    Not sure what a flowchart is? Check out this funny take on it, in XKCD. And this one.

    +
    +

    A codelens demonstration is a good way to help you visualize exactly how the flow of control + works with the for loop. Try stepping forward and backward through the program by pressing + the buttons. You can see the value of name change as the loop iterates through the list of + friends.

    + + +for name in ["Joe", "Amy", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]: + print("Hi ", name, " Please come to my party on Saturday!") + + +

    While loops may not seem to be necessary when you're iterating over a few items, it is extremely helpful when + iterating over lots of items. Imagine if you needed to change what happened in the code block. On the left, when you use + iteration, this is easy. On the right, when you have hard coded the process, this is more difficult.

    + Demonstration of using iteration over hard coding the iteration. +
    diff --git a/pretext/Iteration/GeneralizedSequences.ptx b/pretext/Iteration/GeneralizedSequences.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Iteration/GeneralizedSequences.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Iteration/Glossary.ptx b/pretext/Iteration/Glossary.ptx new file mode 100644 index 00000000..7d1389c5 --- /dev/null +++ b/pretext/Iteration/Glossary.ptx @@ -0,0 +1,60 @@ + +
    + Glossary + + + accumulator pattern +

    A pattern where the program initializes an accumulator variable and then changes it + during each iteration, accumulating a final result.

    +
    + + Control Flow +

    Also known as the flow of execution, the order in which a program executes. By default, the control flow is *sequential*.

    +
    + + for loop traversal (<c>for</c>) +

    Traversing a string or a list means accessing each character in the string or item in the list, one at a time. For example, the following for loop:

    + + +for ix in 'Example': + ... + + +

    executes the body of the loop 7 times with different values of ix each time.

    +
    + + index +

    A variable or value used to select a member of an ordered collection, such as + a character from a string, or an element from a list.

    +
    + + loop body +

    The loop body contains the statements of the program that will be iterate through upon each loop. The loop body is always indented.

    +
    + + pattern +

    A sequence of statements, or a style of coding something that has + general applicability in a number of different situations. Part of + becoming a mature programmer is to learn and establish the + patterns and algorithms that form your toolkit.

    +
    + + range +

    A function that produces a list of numbers. For example, range(5), produces a list of five + numbers, starting with 0, [0, 1, 2, 3, 4].

    +
    + + sequential flow +

    The execution of a program from top to bottom, one statement at a time

    +
    + + terminating condition +

    A condition which stops an interation from continuing

    +
    + + traverse +

    To iterate through the elements of a collection, performing a similar + operation on each.

    +
    +
    +
    diff --git a/pretext/Iteration/Listsandforloops.ptx b/pretext/Iteration/Listsandforloops.ptx new file mode 100644 index 00000000..4320b8f4 --- /dev/null +++ b/pretext/Iteration/Listsandforloops.ptx @@ -0,0 +1,221 @@ + +
    + Lists and <c>for</c> loops +

    It is also possible to perform list traversal using iteration by item. A list is a sequence of items, so the for loop iterates over each item in the list automatically.

    + + +fruits = ["apple", "orange", "banana", "cherry"] + +for afruit in fruits: # by item + print(afruit) + + +

    It almost reads like natural language: For (every) fruit in (the list of) fruits, + print (the name of the) fruit.

    + + Using the <title_reference>range</title_reference> Function to Generate a Sequence to Iterate Over +

    We are now in a position to understand the inner workings we glossed over previously when we first introduced repeated execution with a for loop. + Here was the example:

    + + +print("This will execute first") + +for _ in range(3): + print("This line will execute three times") + print("This line will also execute three times") + +print("Now we are outside of the for loop!") + + +

    The range function takes an integer n as input and returns a sequence of numbers, starting at 0 and going up to but not including n. + Thus, instead of range(3), we could have written [0, 1, 2].

    +

    The loop variable _ is bound to 0 the first time lines 4 and 5 execute. The next time, _ is bound to 1. Third time, it is bound to 2. + _ is a strange name for a variable but if you look carefully at the rules about variable names, it is a legal name. By convention, we use the _ as our loop variable when we don't intend to ever refer to the loop variable. That is, we are just trying to repeat the code block some number of times (once for each item in a sequence), but we are not going to do anything with the particular items. _ will be bound to a different item each time, but we won't ever refer to those particular items in the code.

    +

    By contrast, notice that in the previous activecode window, the loop variable is afruit. In that for loop, we do refer to each item, with print(afruit).

    +
    + + Iteration Simplifies our Turtle Program +

    Remember the turtle drawings we made earlier? Let's look again at how we can use for loops there!

    +

    To draw a square we'd like to do the same thing four times — move the turtle forward some + distance and turn 90 degrees. We previously used 8 lines of Python code to have alex draw the four + sides of a square. This next program does exactly the same thing but, with the help of the for + statement, uses just three lines (not including the setup code). Remember that the for statement + will repeat the forward and left four times, one time for each value in the list.

    + + +import turtle # set up alex +wn = turtle.Screen() +alex = turtle.Turtle() + +for i in [0, 1, 2, 3]: # repeat four times + alex.forward(50) + alex.left(90) + +wn.exitonclick() + + +

    While saving some lines of code might be convenient, it is not the big + deal here. What is much more important is that we've found a repeating + pattern of statements, and we reorganized our program to repeat the pattern.

    +

    The values [0,1,2,3] were provided to make the loop body execute 4 times. + We could have used any four values. For example, consider the following program.

    + + +import turtle # set up alex +wn = turtle.Screen() +alex = turtle.Turtle() + +for aColor in ["yellow", "red", "purple", "blue"]: # repeat four times + alex.forward(50) + alex.left(90) + +wn.exitonclick() + + +

    In the previous example, there were four integers in the list. This time there are four strings. + Since there are four items in the list, the iteration will still occur four times. aColor will + take on each color in the list. We can even take this one step further and use the value of + aColor as part of the computation.

    + + +import turtle # set up alex +wn = turtle.Screen() +alex = turtle.Turtle() + +for aColor in ["yellow", "red", "purple", "blue"]: + alex.color(aColor) + alex.forward(50) + alex.left(90) + +wn.exitonclick() + + +

    In this case, the value of aColor is used to change the color attribute of alex. Each + iteration causes aColor to change to the next value in the list.

    +

    The for-loop is our first example of a compound statement. Syntactically a compound statement + is a statement. The level of indentation of a (whole) compound statement is the indentation of its + heading. In the example above there are five statements with the same indentation, executed + sequentially: the import, 2 assignments, the whole for-loop, and wn.exitonclick(). The + for-loop compound statement is executed completely before going on to the next sequential + statement, wn.exitonclick().

    +

    + Check your Understanding +

    + + +

    How many times will the for loop iterate in the following statements?

    + + +p = [3, 4, "Me", 3, [], "Why", 0, "Tell", 9.3] +for ch in p: + print(ch) + + +
    + + + +

    8

    +
    + +

    Iteration by item will process once for each item in the sequence, even the empty list.

    +
    +
    + + +

    9

    +
    + +

    Yes, there are nine elements in the list so the for loop will iterate nine times.

    +
    +
    + + +

    15

    +
    + +

    Iteration by item will process once for each item in the sequence. Each string is viewed as a single item, even if you are able to iterate over a string itself.

    +
    +
    + + +

    Error, the for statement needs to use the range function.

    +
    + +

    The for statement can iterate over a sequence item by item.

    +
    +
    +
    +
    + + +

    How does python know what statements are contained in the loop body?

    +
    + + + +

    They are indented to the same degree from the loop header.

    +
    + +

    The loop body can have any number of lines, all indented from the loop header.

    +
    +
    + + +

    There is always exactly one line in the loop body.

    +
    + +

    The loop body may have more than one line.

    +
    +
    + + +

    The loop body ends with a semi-colon (;) which is not shown in the code above.

    +
    + +

    Python does not need semi-colons in its syntax, but relies mainly on indentation.

    +
    +
    +
    +
    + + +

    Consider the following code:

    + + +for aColor in ["yellow", "red", "green", "blue"]: + alex.forward(50) + alex.left(90) + + +

    What does each iteration through the loop do?

    +
    + + + +

    Draw a square using the same color for each side.

    +
    + +

    The question is not asking you to describe the outcome of the entire loop, the question is asking you about the outcome of a **single iteration** of the loop.

    +
    +
    + + +

    Draw a square using a different color for each side.

    +
    + +

    Notice that aColor is never actually used inside the loop.

    +
    +
    + + +

    Draw one side of a square.

    +
    + +

    The body of the loop only draws one side of the square. It will be repeated once for each item in the list. However, the color of the turtle never changes.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Iteration/NestedIterationImageProcessing.ptx b/pretext/Iteration/NestedIterationImageProcessing.ptx new file mode 100644 index 00000000..2cf69724 --- /dev/null +++ b/pretext/Iteration/NestedIterationImageProcessing.ptx @@ -0,0 +1,715 @@ + +
    + Nested Iteration: Image Processing +

    Two dimensional tables have both rows and columns. You have probably seen many tables like this if you have used a + spreadsheet program. Another object that is organized in rows and columns is a digital image. In this section we will + explore how iteration allows us to manipulate these images.

    +

    A digital image is a finite collection of small, discrete picture elements called pixels. These pixels are + organized in a two-dimensional grid. Each pixel represents the smallest amount of picture information that is + available. Sometimes these pixels appear as small dots.

    +

    Each image (grid of pixels) has its own width and its own height. The width is the number of columns and the height is + the number of rows. We can name the pixels in the grid by using the column number and row number. However, it is very + important to remember that computer scientists like to start counting with 0! This means that if there are 20 rows, they + will be named 0,1,2, and so on through 19. This will be very useful later when we iterate using range.

    +

    In the figure below, the pixel of interest is found at column c and row r.

    + + + The RGB Color Model +

    Each pixel of the image will represent a single color. The specific color depends on a formula that mixes various amounts + of three basic colors: red, green, and blue. This technique for creating color is known as the RGB Color Model. + The amount of each color, sometimes called the intensity of the color, allows us to have very fine control over the + resulting color.

    +

    The minimum intensity value for a basic color is 0. For example if the red intensity is 0, then there is no red in the + pixel. The maximum intensity is 255. This means that there are actually 256 different amounts of intensity for each basic + color. Since there are three basic colors, that means that you can create 2563 distinct colors using the RGB + Color Model.

    +

    Here are the red, green and blue intensities for some common colors. Note that Black is represented by a pixel having + no basic color. On the other hand, White has maximum values for all three basic color components.

    +
    + + + + + Color + + + Red + + + Green + + + Blue + + + + + Red + + + 255 + + + 0 + + + 0 + + + + + Green + + + 0 + + + 255 + + + 0 + + + + + Blue + + + 0 + + + 0 + + + 255 + + + + + White + + + 255 + + + 255 + + + 255 + + + + + Black + + + 0 + + + 0 + + + 0 + + + + + Yellow + + + 255 + + + 255 + + + 0 + + + + + Magenta + + + 255 + + + 0 + + + 255 + + + +
    +
    +

    In order to manipulate an image, we need to be able to access individual pixels. This capability is provided by a module + called image, provided in ActiveCode 1. The image module defines two classes: Image and Pixel.

    + + +

    If you want to explore image processing on your own outside of the browser you can install the cImage module from http://pypi.org.

    +
    +

    Each Pixel object has three attributes: the red intensity, the green intensity, and the blue intensity. A pixel provides + three methods that allow us to ask for the intensity values. They are called getRed, getGreen, and getBlue. + In addition, we can ask a pixel to change an intensity value using its setRed, setGreen, and setBlue methods.

    +
    + + + + + Method Name + + + Example + + + Explanation + + + + + Pixel(r,g,b) + + + Pixel(20,100,50) + + + Create a new pixel with 20 red, 100 green, and 50 blue. + + + + + getRed() + + + r = p.getRed() + + + Return the red component intensity. + + + + + getGreen() + + + r = p.getGreen() + + + Return the green component intensity. + + + + + getBlue() + + + r = p.getBlue() + + + Return the blue component intensity. + + + + + setRed() + + + p.setRed(100) + + + Set the red component intensity to 100. + + + + + setGreen() + + + p.setGreen(45) + + + Set the green component intensity to 45. + + + + + setBlue() + + + p.setBlue(156) + + + Set the blue component intensity to 156. + + + +
    +
    +

    In the example below, we first create a pixel with 45 units of red, 76 units of green, and 200 units of blue. + We then print the current amount of red, change the amount of red, and finally, set the amount of blue to be + the same as the current amount of green.

    + + +import image + +p = image.Pixel(45, 76, 200) +print(p.getRed()) +p.setRed(66) +print(p.getRed()) +p.setBlue(p.getGreen()) +print(p.getGreen(), p.getBlue()) + + +

    + Check your understanding +

    + + +

    If you have a pixel whose RGB value is (50, 0, 0), what color will this pixel appear to be?

    +
    + + + +

    Dark red

    +
    + +

    Because all three values are close to 0, the color will be dark. But because the red value is higher than the other two, the color will appear red.

    +
    +
    + + +

    Light red

    +
    + +

    The closer the values are to 0, the darker the color will appear.

    +
    +
    + + +

    Dark green

    +
    + +

    The first value in RGB is the red value. The second is the green. This color has no green in it.

    +
    +
    + + +

    Light green

    +
    + +

    The first value in RGB is the red value. The second is the green. This color has no green in it.

    +
    +
    +
    +
    +
    + + Image Objects +

    To access the pixels in a real image, we need to first create an Image object. Image objects can be created in two + ways. First, an Image object can be made from the files that store digital images. The image object has an attribute + corresponding to the width, the height, and the collection of pixels in the image.

    +

    It is also possible to create an Image object that is empty. An EmptyImage has a width and a height. However, the + pixel collection consists of only White pixels.

    +

    We can ask an image object to return its size using the getWidth and getHeight methods. We can also get a pixel + from a particular location in the image using getPixel and change the pixel at a particular location using + setPixel.

    +

    The Image class is shown below. Note that the first two entries show how to create image objects. The parameters are + different depending on whether you are using an image file or creating an empty image.

    +
    + + + + + Method Name + + + Example + + + Explanation + + + + + Image(filename) + + + img = image.Image(cy.png) + + + Create an Image object from the file cy.png. + + + + + EmptyImage() + + + img = image.EmptyImage(100,200) + + + Create an Image object that has all White pixels + + + + + getWidth() + + + w = img.getWidth() + + + Return the width of the image in pixels. + + + + + getHeight() + + + h = img.getHeight() + + + Return the height of the image in pixels. + + + + + getPixel(col,row) + + + p = img.getPixel(35,86) + + + Return the pixel at column 35, row 86. + + + + + setPixel(col,row,p) + + + img.setPixel(100,50,mp) + + + Set the pixel at column 100, row 50 to be mp. + + + +
    +
    +

    Consider the image shown below. Assume that the image is stored in a file called luther.jpg. Line 2 opens the file and + uses the contents to create an image object that is referred to by img. Once we have an image object, we can use the + methods described above to access information about the image or to get a specific pixel and check on its basic color + intensities.

    + <img src="../_static/LutherBellPic.jpg" id="luther.jpg" alt="image of Luther College bell picture"> + + +import image +img = image.Image("luther.jpg") + +print(img.getWidth()) +print(img.getHeight()) + +p = img.getPixel(45, 55) +print(p.getRed(), p.getGreen(), p.getBlue()) + + +

    When you run the program you can see that the image has a width of 400 pixels and a height of 244 pixels. Also, the + pixel at column 45, row 55, has RGB values of 165, 161, and 158. Try a few other pixel locations by changing the getPixel arguments and rerunning the program.

    +

    + Check your understanding +

    + + +

    Using the previous ActiveCode example, select the answer that is closest to the RGB values of the pixel at row 100, column 30? The values may be off by one or two due to differences in browsers.

    +
    + + + +

    149 132 122

    +
    + +

    These are the values for the pixel at row 30, column 100. Get the values for row 100 and column 30 with p = img.getPixel(30, 100). (Note that the first argument to getPixel is the column, not the row.)

    +
    +
    + + +

    183 179 170

    +
    + +

    Yes, the RGB values are 183 179 170 at row 100 and column 30.

    +
    +
    + + +

    165 161 158

    +
    + +

    These are the values from the original example (row 45, column 55). Get the values for row 100 and column 30 with p = img.getPixel(30, 100).

    +
    +
    + + +

    201 104 115

    +
    + +

    These are simply made-up values that may or may not appear in the image. Get the values for row 100 and column 30 with p = img.getPixel(30, 100).

    +
    +
    +
    +
    +
    + + Image Processing and Nested Iteration +

    Image processing refers to the ability to manipulate the individual pixels in a digital image. In order to process + all of the pixels, we need to be able to systematically visit all of the rows and columns in the image. The best way + to do this is to use nested iteration.

    +

    Nested iteration simply means that we will place one iteration construct inside of another. We will call these two + iterations the outer iteration and the inner iteration. To see how this works, consider the iteration below.

    + + +for i in range(5): + print(i) + + +

    We have seen this enough times to know that the value of i will be 0, then 1, then 2, and so on up to 4. The + print will be performed once for each pass. However, the body of the loop can contain any statements including another iteration (another for statement). For example,

    + + +for i in range(5): + for j in range(3): + print(i, j) + + +

    The for i iteration is the outer iteration and the for j iteration is the inner iteration. Each pass through + the outer iteration will result in the complete processing of the inner iteration from beginning to end. This means that + the output from this nested iteration will show that for each value of i, all values of j will occur.

    +

    Here is the same example in activecode. Try it. Note that the value of i stays the same while the value of j + changes. The inner iteration, in effect, is moving faster than the outer iteration.

    + + +for i in range(5): + for j in range(3): + print(i, j) + + +

    Another way to see this in more detail is to examine the behavior with codelens. Step through the iterations to see the + flow of control as it occurs with the nested iteration. Again, for every value of i, all of the values of j will occur. You can see that the inner iteration completes before going on to the next pass of the outer iteration.

    + + +for i in range(5): + for j in range(3): + print(i, j) + + +

    Our goal with image processing is to visit each pixel. We will use an iteration to process each row. Within that + iteration, we will use a nested iteration to process each column. The result is a nested iteration, similar to the one + seen above, where the outer for loop processes the rows, from 0 up to but not including the height of the image. + The inner for loop will process each column of a row, again from 0 up to but not including the width of the image.

    +

    The resulting code will look like the following. We are now free to do anything we wish to each pixel in the image.

    + + +for row in range(img.getHeight()): + for col in range(img.getWidth()): + # do something with the pixel at position (col,row) + + +

    One of the easiest image processing algorithms will create what is known as a negative image. A negative image simply + means that each pixel will be the opposite of what it was originally. But what does opposite mean?

    +

    In the RGB color model, we can consider the opposite of the red component as the difference between the original red + and 255. For example, if the original red component was 50, then the opposite, or negative red value would be 255-50 + or 205. In other words, pixels with a lot of red will have negatives with little red and pixels with little red will have + negatives with a lot. We do the same for the blue and green as well.

    +

    The program below implements this algorithm using the previous image (luther.jpg). Run it to see the resulting negative + image. Note that there is a lot of processing taking place and this may take a few seconds to complete. In addition, here + are two other images that you can use (cy.png and goldygopher.png).

    + <img src="../_static/cy.png" id="cy.png" alt="image of Cy the Cardinal, mascot of the Iowa State University"> +<h4 style="text-align: center;">cy.png</h4> + <img src="../_static/goldygopher.png" id="goldygopher.png" alt="image of Goldy Gopher, mascot of the University of Minnesota-Twin Cities"> +<h4 style="text-align: center;">goldygopher.png</h4> +

    Change the name of the file in the image.Image() call to see how these images look as negatives. Also, note that + there is an exitonclick method call at the very end which will close the window when you click on it. This will allow + you to clear the screen before drawing the next negative.

    + + +import image + +img = image.Image("luther.jpg") +win = image.ImageWin(img.getWidth(), img.getHeight()) +img.draw(win) +img.setDelay(1,15) # setDelay(0) turns off animation + +for row in range(img.getHeight()): + for col in range(img.getWidth()): + p = img.getPixel(col, row) + + newred = 255 - p.getRed() + newgreen = 255 - p.getGreen() + newblue = 255 - p.getBlue() + + newpixel = image.Pixel(newred, newgreen, newblue) + + img.setPixel(col, row, newpixel) + +img.draw(win) +win.exitonclick() + + +

    Let's take a closer look at the code. After importing the image module, we create an image object called img that + represents a typical digital photo. We will update each pixel in this image from top to bottom, left to right, which you + should be able to observe. You can change the values in setDelay to make the program progress faster or slower.

    +

    Lines 8 and 9 create the nested iteration that we discussed earlier. This allows us to process each pixel in the image. + Line 10 gets an individual pixel.

    +

    Lines 12-14 create the negative intensity values by extracting the original intensity from the pixel and subtracting it + from 255. Once we have the newred, newgreen, and newblue values, we can create a new pixel (Line 15).

    +

    Finally, we need to replace the old pixel with the new pixel in our image. It is important to put the new pixel into the + same location as the original pixel that it came from in the digital photo.

    +

    Try to change the program above so that the outer loop iterates over the columns and the inner loop iterates over the + rows. We still create a negative image, but you can see that the pixels update in a very different order.

    + + Other pixel manipulation +

    There are a number of different image processing algorithms that follow the same pattern as shown above. Namely, take the original pixel, extract the red, green, and blue intensities, and then create a new pixel from them. The new pixel is inserted into an empty image at the same location as the original.

    +

    For example, you can create a gray scale pixel by averaging the red, green and blue intensities and then using that value for all intensities.

    +

    From the gray scale you can create black white by setting a threshold and selecting to either insert a white pixel for a black pixel into the empty image.

    +

    You can also do some complex arithmetic and create interesting effects, such as + Sepia Tone

    +
    +

    + Check your understanding +

    + + +

    What will the following nested for-loop print? (Note, if you are having trouble with this question, review CodeLens 3).

    + + +for i in range(3): + for j in range(2): + print(i, j) + + +
    a.
    +
    +0 0
    +0 1
    +1 0
    +1 1
    +2 0
    +2 1
    +
    +b.
    +
    +0   0
    +1   0
    +2   0
    +0   1
    +1   1
    +2   1
    +
    +c.
    +
    +0   0
    +0   1
    +0   2
    +1   0
    +1   1
    +1   2
    +
    +d.
    +
    +0   1
    +0   1
    +0   1
    +
    + + + +

    Output a

    +
    + +

    i will start with a value of 0 and then j will iterate from 0 to 1. Next, i will be 1 and j will iterate from 0 to 1. Finally, i will be 2 and j will iterate from 0 to 1.

    +
    +
    + + +

    Output b

    +
    + +

    The inner for-loop controls the second digit (j). The inner for-loop must complete before the outer for-loop advances.

    +
    +
    + + +

    Output c

    +
    + +

    The inner for-loop controls the second digit (j). Notice that the inner for-loop is over the list [0, 1].

    +
    +
    + + +

    Output d

    +
    + +

    The outer for-loop runs 3 times (0, 1, 2) and the inner for-loop runs twice for each time the outer for-loop runs, so this code prints exactly 6 lines.

    +
    +
    +
    +
    + + +

    What would the image produced from ActiveCode box 16 look like if you replaced the lines:

    + + +newred = 255 - p.getRed() +newgreen = 255 - p.getGreen() +newblue = 255 - p.getBlue() + + +

    with the lines:

    + + +newred = p.getRed() +newgreen = 0 +newblue = 0 + + +
    + + + +

    It would look like a red-washed version of the bell image

    +
    + +

    Because we are removing the green and the blue values, but keeping the variation of the red the same, you will get the same image, but it will look like it has been bathed in red.

    +
    +
    + + +

    It would be a solid red rectangle the same size as the original image

    +
    + +

    Because the red value varies from pixel to pixel, this will not look like a solid red rectangle. For it to look like a solid red rectangle each pixel would have to have exactly the same red value.

    +
    +
    + + +

    It would look the same as the original image

    +
    + +

    If you remove the blue and green values from the pixels, the image will look different, even though there does not appear to be any blue or green in the original image (remember that other colors are made of combinations of red, green and blue).

    +
    +
    + + +

    It would look the same as the negative image in the example code

    +
    + +

    Because we have changed the value of the pixels from what they were in the original ActiveCode box code, the image will not be the same.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Iteration/Stringsandforloops.ptx b/pretext/Iteration/Stringsandforloops.ptx new file mode 100644 index 00000000..67c30c36 --- /dev/null +++ b/pretext/Iteration/Stringsandforloops.ptx @@ -0,0 +1,110 @@ + +
    + Strings and <c>for</c> loops +

    Since a string is simply a sequence of characters, the for loop iterates over each character + automatically. (As always, try to predict what the output will be from this code before your run it.)

    + + +for achar in "Go Spot Go": + print(achar) + + +

    The loop variable achar is automatically reassigned each character in the string Go Spot Go. + We will refer to this type of sequence iteration as iteration by item. Note that the for loop + processes the characters in a string or items in a sequence one at a time from left to right.

    +

    + Check your understanding +

    + + +

    How many times is the word HELLO printed by the following statements?

    + + +s = "python rocks" +for ch in s: + print("HELLO") + + +
    + + + +

    10

    +
    + +

    Iteration by item will process once for each item in the sequence.

    +
    +
    + + +

    11

    +
    + +

    The blank is part of the sequence.

    +
    +
    + + +

    12

    +
    + +

    Yes, there are 12 characters, including the blank.

    +
    +
    + + +

    Error, the for statement needs to use the range function.

    +
    + +

    The for statement can iterate over a sequence item by item.

    +
    +
    +
    +
    + + +

    How many times is the word HELLO printed by the following statements?

    + + +s = "python rocks" +for ch in s[3:8]: + print("HELLO") + + +
    + + + +

    4

    +
    + +

    Slice returns a sequence that can be iterated over.

    +
    +
    + + +

    5

    +
    + +

    Yes, The blank is part of the sequence returned by slice.

    +
    +
    + + +

    6

    +
    + +

    Check the result of s[3:8]. It does not include the item at index 8.

    +
    +
    + + +

    Error, the for statement cannot use slice.

    +
    + +

    Slice returns a sequence.

    +
    +
    +
    +
    +
    diff --git a/pretext/Iteration/TheAccumulatorPattern.ptx b/pretext/Iteration/TheAccumulatorPattern.ptx new file mode 100644 index 00000000..11e91ff1 --- /dev/null +++ b/pretext/Iteration/TheAccumulatorPattern.ptx @@ -0,0 +1,244 @@ + +
    + The Accumulator Pattern +

    One common programming pattern is to traverse a sequence, accumulating a value as we go, + such as the sum-so-far or the maximum-so-far. That way, at the end of the traversal we have + accumulated a single value, such as the sum total of all the items or the largest item.

    +
    +
  • + The anatomy of the accumulation pattern includes: +

    +

      +
    • +

      initializing an accumulator variable to an initial value (such as 0 if accumulating a sum)

      +
    • +
    • +

      iterating (e.g., traversing the items in a sequence)

      +
    • +
    • +

      updating the accumulator variable on each iteration (i.e., when processing each item in the sequence)

      +
    • +
    +

    +
  • +
    +

    For example, consider the following code, which computes the sum of the numbers in a list.

    + + +nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +accum = 0 +for w in nums: + accum = accum + w +print(accum) + + +

    In the program above, notice that the variable accum starts out with a value of 0. + Next, the iteration is performed 10 times. Inside the for loop, the update occurs. + w has the value of current item (1 the first time, then 2, then 3, etc.). + accum is reassigned a new value which is the old value plus the current value of w.

    +

    This pattern of iterating the updating of a variable is commonly referred to as the + accumulator pattern. We refer to the variable as the accumulator. This pattern will come up + over and over again. Remember that the key to making it work successfully is to be sure to + initialize the variable before you start the iteration. Once inside the iteration, it is required + that you update the accumulator.

    +

    Here is the same program in codelens. Step through the function and watch the running total + accumulate the result.

    + + +nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +accum = 0 +for w in nums: + accum = accum + w +print(accum) + + + +

    What would happen if we indented the print accum statement? Not sure? Make a prediction, then try it and find out.

    +
    +

    We can utilize the range function in this situation as well. Previously, you've seen it used when we wanted to draw in + turtle. There we used it to iterate a certain number of times. We can do more than that though. The range function + takes at least one input - which should be an integer - and returns a list as long as your input. While you can provide + two inputs, we will focus on using range with just one input. With one input, range will start at zero and go up to - but + not include - the input. Here are the examples:

    + + +print("range(5): ") +for i in range(5): + print(i) + +print("range(0,5): ") +for i in range(0, 5): + print(i) + +# Notice the casting of `range` to the `list` +print(list(range(5))) +print(list(range(0,5))) + + +

    Here's how you could use the range function in the previous problem.

    + + +accum = 0 +for w in range(11): + accum = accum + w +print(accum) + +# or, if you use two inputs for the range function + +sec_accum = 0 +for w in range(1,11): + sec_accum = sec_accum + w +print(sec_accum) + + +

    Because the range function is exclusive of the ending number, we have to use 11 as the function input.

    +

    We can use the accumulation pattern to count the number of things or to sum up a total. The + above examples only covered how to get the sum for a list, but we can also count how many items are + in the list if we wanted to.

    + + +nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +count = 0 +for w in nums: + count = count + 1 +print(count) + + +

    In this example we don't make use of w even though the iterator variable (loop variable) is a necessary part of + constructing a for loop. Instead of adding the value of w to count we add a 1 to it, + because we're incrementing the value of count when we iterate each time through the loop. Though in + this scenario we could have used the len function, there are other cases later on where len + won't be useful but we will still need to count.

    +

    + Check your understanding +

    + + +

    Consider the following code:

    + + +nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +for w in nums: + accum = 0 + accum = accum + w +print(accum) + + +

    What happens if you put the initialization of accum inside the for loop as the first + instruction in the loop?

    +
    + + + +

    It will print out 10 instead of 55

    +
    + +

    The variable accum will be reset to 0 each time through the loop. Then it will add the current item. Only the last item will count.

    +
    +
    + + +

    It will cause a run-time error

    +
    + +

    Assignment statements are perfectly legal inside loops and will not cause an error.

    +
    +
    + + +

    It will print out 0 instead of 55

    +
    + +

    Good thought: the variable accum will be reset to 0 each time through the loop. But then it adds the current item.

    +
    +
    +
    +
    + + +

    Rearrange the code statements so that the program will add up the first n odd numbers where n is provided by the user.

    +
    + + + n = int(input('How many odd numbers would you like to add together?')) + thesum = 0 + oddnumber = 1 + + + for counter in range(n): + + + thesum = thesum + oddnumber + oddnumber = oddnumber + 2 + + + print(thesum) + + +
    + + +

    Write code to create a list of integers from 0 through 52 and assign that list to the variable numbers. You should use the Python range function and don't forget to covert the result to a list – do not type out the whole list yourself.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(numbers, list(range(53)), "Testing that numbers is a list that contains the correct elements.") + +myTests().main() + + +
    + + +

    Count the number of characters in string str1. Do not use len(). Save the number in variable numbs.

    +
    + + +str1 = "I like nonsense, it wakes up the brain cells. Fantasy is a necessary ingredient in living." + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testEight(self): + self.assertEqual(numbs, 90, "Testing that numbs is assigned to correct values.") + self.assertNotIn("len(", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    Create a list of numbers 0 through 40 and assign this list to the variable numbers. Then, accumulate the total of the list's values and assign that sum to the variable sum1.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testNineA(self): + self.assertEqual(numbers, [0, 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, 32, 33, 34, 35, 36, 37, 38, 39, 40], "Testing that numbers is assigned to correct values.") + + def testNineB(self): + self.assertEqual(sum1, 820, "Testing that sum1 has the correct value.") + +myTests().main() + + +
    +
    diff --git a/pretext/Iteration/TheforLoop.ptx b/pretext/Iteration/TheforLoop.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Iteration/TheforLoop.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Iteration/TraversalandtheforLoopByIndex.ptx b/pretext/Iteration/TraversalandtheforLoopByIndex.ptx new file mode 100644 index 00000000..eb3d75a7 --- /dev/null +++ b/pretext/Iteration/TraversalandtheforLoopByIndex.ptx @@ -0,0 +1,90 @@ + +
    + Traversal and the <c>for</c> Loop: By Index +

    With a for loop, the loop variable is bound, on each iteration, to the next item in a sequence. Sometimes, it is natural to think about iterating through the positions, or indexes of a sequence, rather than through the items themselves.

    +

    For example, consider the list ['apple', 'pear', 'apricot', 'cherry', 'peach']. ‘apple' is at position 0, ‘pear' at position 1, and ‘peach' at position 4.

    +

    Thus, we can iterate through the indexes by generating a sequence of them, using the range function.

    + + +fruits = ['apple', 'pear', 'apricot', 'cherry', 'peach'] +for n in range(5): + print(n, fruits[n]) + + +

    In order to make the iteration more general, we can use the len function to provide the bound for range. This is + a very common pattern for traversing any sequence by position. Make sure you understand why the range function behaves + correctly when using len of the string as its parameter value.

    + + +fruits = ['apple', 'pear', 'apricot', 'cherry', 'peach'] +for n in range(len(fruits)): + print(n, fruits[n]) + + +

    In some other programming languages, that's the only way to iterate through a sequence, by iterating through the positions and extracting the items at each of the positions. Python code is often easier to read because we don't have to do iteration that way. Compare the iteration above with the more pythonic approach below.

    + + +fruits = ['apple', 'pear', 'apricot', 'cherry', 'peach'] +for fruit in fruits: + print(fruit) + + +

    If we really want to print the indexes (positions) along with the fruit names, then iterating through the indexes as in the previous versions is available to us. Python also provides an enumerate function which provides a more pythonic way of enumerating the items in a list, but we will delay the explanation of how to use enumerate until we cover the notions of .

    +

    + Check your understanding +

    + + +

    How many times is the letter p printed by the following statements?

    + + +s = "python" +for idx in range(len(s)): + print(s[idx % 2]) + + +
    + + + +

    0

    +
    + +

    idx % 2 is 0 whenever idx is even

    +
    +
    + + +

    1

    +
    + +

    idx % 2 is 0 whenever idx is even

    +
    +
    + + +

    2

    +
    + +

    idx % 2 is 0 whenever idx is even

    +
    +
    + + +

    3

    +
    + +

    idx % 2 is 0 whenever idx is even

    +
    +
    + + +

    6

    +
    + +

    idx % 2 is 0 whenever idx is even

    +
    +
    +
    +
    +
    diff --git a/pretext/Iteration/WPKeepingTrackofYourIteratorVariableYourIterable.ptx b/pretext/Iteration/WPKeepingTrackofYourIteratorVariableYourIterable.ptx new file mode 100644 index 00000000..5c37f410 --- /dev/null +++ b/pretext/Iteration/WPKeepingTrackofYourIteratorVariableYourIterable.ptx @@ -0,0 +1,453 @@ + +
    + 👩‍💻 Keeping Track of Your Iterator Variable and Your Iterable +

    When students first begin using for loops, they sometimes have difficulty understanding the difference between the iterator variable (the loop variable) and the iterable.

    +

    The iterable is the object that you will parsing through in a for loop. Generally, this object does not change while the for loop is being executed.

    +

    The iterator (loop) variable is the variable which stores a portion of the iterable when the for loop is being executed. Each time the loop iterates, the value of the iterator variable will change to a different portion of the iterable.

    + + +

    What is the type of your iterable?

    + + +n = ["word", "phrase", 8, ("beam")] +for item in n: + print(item) + + +
    + + + +

    string

    +
    + +

    Incorrect, that is not the type of the iterable.

    +
    +
    + + +

    list

    +
    + +

    Yes, the iterable is n, and it is a list.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, that is not the type of the iterable.

    +
    +
    + + +

    iterable

    +
    + +

    Incorrect, that is not the type of the iterable.

    +
    +
    + + +

    error, unable to iterate over the object.

    +
    + +

    Incorrect, Python can iterate over this type.

    +
    +
    +
    +
    + + +

    What is the type of your iterable?

    + + +t = "couch" +for z in t: + print(z) + + +
    + + + +

    string

    +
    + +

    Yes, the iterable in this example is a string

    +
    +
    + + +

    list

    +
    + +

    Incorrect, that is not the type of the iterable.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, that is not the type of the iterable.

    +
    +
    + + +

    iterable

    +
    + +

    Incorrect, that is not the type of the iterable.

    +
    +
    + + +

    error, unable to iterate over the object.

    +
    + +

    Incorrect, Python can iterate over this type.

    +
    +
    +
    +
    + + +

    What is the type of your iterable?

    + + +y = 18 +for z in y: + print(z) + + +
    + + + +

    string

    +
    + +

    Incorrect, there are no strings present in the code.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, there are no lists present in the code.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, there are no tuples in the code.

    +
    +
    + + +

    iterable

    +
    + +

    Incorrect, there are no iterable objects in the code.

    +
    +
    + + +

    error, unable to iterate over the object.

    +
    + +

    Yes, Python is unable to iterate over integers and floats.

    +
    +
    +
    +
    + + +

    What is the type of your iterable?

    + + +t = ("couch", "chair", "washer", "dryer", "table") +for z in t: + print(z) + + +
    + + + +

    string

    +
    + +

    Incorrect, the iterable is not a string.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, there is no list in the code.

    +
    +
    + + +

    tuple

    +
    + +

    Yes, the iterable in this situation is a tuple.

    +
    +
    + + +

    iterable

    +
    + +

    Incorrect, that is not the best answer for this problem.

    +
    +
    + + +

    error, unable to iterate over the object.

    +
    + +

    Incorrect, Python can iterate over this type.

    +
    +
    +
    +
    + + +

    What's the type of your iterator variable?

    + + +t = ["couch", "chair", "washer", "dryer", "table"] +for z in t: + print(z) + + +
    + + + +

    string

    +
    + +

    Correct! Every item in the iterator variable will be a string.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, that is not the type of the iterator variable.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, that is not the type of the iterator variable.

    +
    +
    + + +

    integer

    +
    + +

    Incorrect, that is not the type of the iterator variable.

    +
    +
    + + +

    error, unable to iterate and initialize the iterator variable

    +
    + +

    Incorrect, the for loop is iterating over an iterable object.

    +
    +
    +
    +
    + + +

    What's the type of your iterator variable in the first iteration?

    + + +t = [9, "setter", 3, "wing spiker", 10, "middle blocker"] +for z in t: + print(z) + + +
    + + + +

    string

    +
    + +

    Incorrect, think about what the for loop will look at first.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, that is the type of the iterable, not the iterator variable.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, there is no tuple in the code.

    +
    +
    + + +

    integer

    +
    + +

    Yes, the first item in t is an integer.

    +
    +
    + + +

    error, unable to iterate and initialize the iterator variable

    +
    + +

    Incorrect, the for loop is iterating over an iterable object.

    +
    +
    +
    +
    + + +

    What's the type of your iterator variable in the second iteration?

    + + +t = [9, "setter", 3, "wing spiker", 10, "middle blocker"] +for z in t: + print(z) + + +
    + + + +

    string

    +
    + +

    Yes, the second item in t is a string.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, that is the type of the iterable, not the iterator variable.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, there is no tuple in the code.

    +
    +
    + + +

    integer

    +
    + +

    Incorrect, think about what the for loop will look at during the second iteration.

    +
    +
    + + +

    error, unable to iterate and initialize the iterator variable

    +
    + +

    Incorrect, the for loop is iterating over an iterable object.

    +
    +
    +
    +
    + + +

    What's the type of your iterator variable in the final iteration?

    + + +red = "colors" +for blue in red: + print(blue) + + +
    + + + +

    string

    +
    + +

    Yes, the last value stored in the iterator variable, blue, is the letter "s", which is a string (note that even a single character is a string in python).

    +
    +
    + + +

    list

    +
    + +

    Incorrect, there is no list in the code.

    +
    +
    + + +

    tuple

    +
    + +

    Incorrect, there is no tuple in the code.

    +
    +
    + + +

    integer

    +
    + +

    Incorrect, there is no integer in the code.

    +
    +
    + + +

    error, unable to iterate and initialize the iterator variable

    +
    + +

    Incorrect, the for loop is iterating over an iterable object.

    +
    +
    +
    +
    +

    As you go through the codelens window, you will be asked a set of questions.

    + + +item = ["M", "I", "S", "S", "O", "U", "R", "I"] +for val in item: + val = val + "!" + + + + +for n in range(5): + print(n) + + +
    diff --git a/pretext/Iteration/WPNamingVariablesinForLoops.ptx b/pretext/Iteration/WPNamingVariablesinForLoops.ptx new file mode 100644 index 00000000..d988b85d --- /dev/null +++ b/pretext/Iteration/WPNamingVariablesinForLoops.ptx @@ -0,0 +1,49 @@ + +
    + 👩‍💻 Naming Variables in For Loops +

    We've mentioned before about carefully choosing your variable names. Though the + names you choose aren't meaningful to the program, they can be to you. When we + choose names for variables in for loops, the more understandable they are to us, + the easier it will be to use them. Here are some tips to make your for loops more + readable for yourself and anyone else who may read your programs:

    +

    +

      +
    1. +

      Use singular nouns for the iterator variable, which is also called the loop variable (things like song, book, post, letter, word).

      +
    2. +
    3. +

      Use plural nouns for the sequence variable (things like songs, books, posts, letters, words).

      +
    4. +
    +

    +

    While these two tips won't always apply, they are general best practices when it + comes to choosing variable names. Below we have an example!

    + + +# x is a list defined elsewhere + +for y in x: + print(y) + + +

    Since we can't see the contents of x right now - this might be the case if we have + a long program - then these names would make the program hard to understand. Let's + compare this to a program that does the same thing, but uses better names.

    + + +# genres is a list defined elsewhere + +for genre in genres: + print(genre) + + +

    Here what we expect is much more clear, even if we didn't see how genres was initialized!

    +

    The code below was used to initialize x and genres so you're free to look at it but you + don't need to run it!

    + + +x = ["jazz", "pop", "rock", "country", "punk", "folk", "hip-hop", "rap", "alternative"] +genres = ["jazz", "pop", "rock", "country", "punk", "folk", "hip-hop", "rap", "alternative"] + + +
    diff --git a/pretext/Iteration/WPPrintingIntermediateResults.ptx b/pretext/Iteration/WPPrintingIntermediateResults.ptx new file mode 100644 index 00000000..83c6dccf --- /dev/null +++ b/pretext/Iteration/WPPrintingIntermediateResults.ptx @@ -0,0 +1,65 @@ + +
    + 👩‍💻 Printing Intermediate Results +

    In this textbook we provide the codelens tool so that you are able to step through + the program and watch what happens each time a line is evaluated by the Python + interpretor. What if you didn't have codelens though, what would you do?

    +

    In that case, print statements are your best friend. They can show you what the value of + something is. This is especially helpful in the case of writing for loops or accumulating + a value. If something is going wrong you can compare what you expect to happen to what + is actually happening.

    + + +w = range(10) + +tot = 0 +for num in w: + tot += num +print(tot) + + +

    Say we weren't sure what num was being assigned each time we iterated. One way to find out + would be to add a print statement inside of the for loop to see.

    + + +w = range(10) + +tot = 0 +for num in w: + print(num) + tot += num +print(tot) + + +

    If we wanted to see what was happening to tot as well, we could print that out in the for loop as well!

    + + +w = range(10) + + +tot = 0 +for num in w: + print(num) + tot += num + print(tot) +print(tot) + + +

    Finally, if we wanted to make these numbers easier to understand, we could add more to the print statements + to make them easier to read!

    + + +w = range(10) + +tot = 0 +print("***** Before the For Loop ******") +for num in w: + print("***** A New Loop Iteration ******") + print("Value of num:", num) + tot += num + print("Value of tot:", tot) +print("***** End of For Loop *****") +print("Final total:", tot) + + +
    diff --git a/pretext/Iteration/intro-Iteration.ptx b/pretext/Iteration/intro-Iteration.ptx new file mode 100644 index 00000000..e731b6f5 --- /dev/null +++ b/pretext/Iteration/intro-Iteration.ptx @@ -0,0 +1,24 @@ + +
    + Introduction: Iteration +

    A basic building block of all programs is to be able to repeat some code + over and over again. Whether it is updating the bank balances of millions of customers each night, or sending email messages to thousands of people programming involves instructing the computer to do many repetitive actions. In computing, we refer to this repetitive execution as iteration. In this section, we will explore some mechanisms for basic iteration.

    +

    With collections (lists and strings), a lot of computations involve processing one item at a time. For strings, this means that we would like to process one character at a time. Often we start at the beginning, select each character in turn, do something to it, and continue until the end. For example, we could take each character and substitute for the character 13 characters away in the alphabet to create a coded message.

    +

    This pattern of processing is called a traversal, or iteration over the characters. Similarly, we can process each of the items in a list, one at a time, iterating over the items in the list. This has applications in every piece of software you can imagine:

    +

    +

      +
    • +

      Displaying a list of friends on SnapChat

      +
    • +
    • +

      Updating the position of every character on the screen of a video game

      +
    • +
    • +

      Displaying the locations that Doctors Without Borders operates in

      +
    • +
    +

    + + + +
    diff --git a/pretext/Iteration/toctree.ptx b/pretext/Iteration/toctree.ptx new file mode 100644 index 00000000..f3c7bf70 --- /dev/null +++ b/pretext/Iteration/toctree.ptx @@ -0,0 +1,19 @@ + + + Iteration + + + + + + + + + + + + + + + + diff --git a/pretext/Iteration/week2a2.ptx b/pretext/Iteration/week2a2.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Iteration/week2a2.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/MoreAboutIteration/BreakandContinue.ptx b/pretext/MoreAboutIteration/BreakandContinue.ptx new file mode 100644 index 00000000..413472bd --- /dev/null +++ b/pretext/MoreAboutIteration/BreakandContinue.ptx @@ -0,0 +1,42 @@ + +
    + Break and Continue +

    Python provides ways for us to control the flow of iteration with a two keywords: break and continue.

    +

    break allows the program to immediately ‘break out' of the loop, regardless of the loop's conditional structure. + This means that the program will then skip the rest of the iteration, without rechecking the condition, and just goes on + to the next outdented code that exists after the whole while loop.

    + image showing a rectangle with "code block" written on it on top. Then, text that read "while {condition}": followed by an indented block with "..." written on it. break is then written and another indented block is placed after the phrase break, which has "... (skipped)" written on it. Finally, an unindented block belonging to code outside the while loop is at the bottom. It says "code block". An arrow points from the word break to the unindented block at the bottom and the phrase "break out of the loop" is written. + + +while True: + print("this phrase will always print") + break + print("Does this phrase print?") + +print("We are done with the while loop.") + + +

    We can see here how the print statement right after break is not executed. In fact, without using break, we have no + way to stop the while loop because the condition is always set to True!

    +

    continue is the other keyword that can control the flow of iteration. Using continue allows the program to + immediately continue with the next iteration. The program will skip the rest of the iteration, recheck the condition, + and maybe does another iteration depending on the condition set for the while loop.

    + image showing a rectangle with "code block" written on it on top. Then, text that read "while {condition}": followed by an indented block with "..." written on it. continue is then written and another indented block is placed after the phrase continue, which has "... (skipped)" written on it. Finally, an unindented block belonging to code outside the while loop is at the bottom. It says "code block". An arrow points from the word continue to the while conditional statement at the top of the while loop. The phrase "continue at the start of the loop" is written. + + +x = 0 +while x < 10: + print("we are incrementing x") + if x % 2 == 0: + x += 3 + continue + if x % 3 == 0: + x += 5 + x += 1 +print("Done with our loop! X has the value: " + str(x)) + + +

    Try stepping through the above code in codelens to watch the order that the code is executed in. Notice in the first + iteration how the program doesn't move to evaluate the divisible by 3 statement or add 1 to x. Instead, it continues to + the next iteration.

    +
    diff --git a/pretext/MoreAboutIteration/ChapterAssessment.ptx b/pretext/MoreAboutIteration/ChapterAssessment.ptx new file mode 100644 index 00000000..7bcd7112 --- /dev/null +++ b/pretext/MoreAboutIteration/ChapterAssessment.ptx @@ -0,0 +1,144 @@ + +
    + Chapter Assessment + + +

    Write a function, sublist, that takes in a list of numbers as the parameter. In the function, use a while loop to return a sublist of the input list. The sublist should contain the same values of the original list up until it reaches the number 5 (it should not contain the number 5).

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(sublist([1, 2, 3, 4, 5, 6, 7, 8]), [1, 2, 3, 4], "Testing that sublist([1, 2, 3, 4, 5, 6, 7, 8]) returns [1, 2, 3, 4]") + self.assertEqual(sublist([5]), [], "Testing that sublist([5]) returns []") + self.assertEqual(sublist([8, 6, 5]), [8, 6], "Testing that sublist([8, 6, 5]) returns [8, 6]") + self.assertEqual(sublist([1, 6, 2, 3, 9]), [1, 6, 2, 3, 9], "Testing that sublist([1, 6, 2, 3, 9]) returns ([1, 6, 2, 3, 9])") + +myTests().main() + + +
    + + +

    Write a function called check_nums that takes a list as its parameter, and contains a while loop that only stops once the element of the list is the number 7. What is returned is a list of all of the numbers up until it reaches 7.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(check_nums([0,2,4,9,2,3,6,8,12,14,7,9,10,8,3]), [0,2,4,9,2,3,6,8,12,14], "Testing that check_nums stops on the correct postion with input [0,2,4,9,2,3,6,8,12,14,7,9,10,8,3]") + self.assertEqual(check_nums([9,302,4,62,78,97,10,7,8,23,53,1]), [9,302,4,62,78,97,10], "Testing that check_nums stops on the correct position with input [9,302,4,62,78,97,10,7,8,23,53,1]") + self.assertEqual(check_nums([7,8,3,2,4,51]), [], "Testing that check_nums stops on the correct position with input [7,8,3,2,4,51]") + self.assertEqual(check_nums([1, 6, 2, 3, 9]), [1, 6, 2, 3, 9], "Testing that check_nums([1, 6, 2, 3, 9]) returns ([1, 6, 2, 3, 9])") + +myTests().main() + + +
    + + +

    Write a function, sublist, that takes in a list of strings as the parameter. In the function, use a while loop to return a sublist of the input list. The sublist should contain the same values of the original list up until it reaches the string STOP (it should not contain the string STOP).

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFour(self): + self.assertEqual(sublist(["bob", "joe", "lucy", "STOP", "carol", "james"]), ["bob", "joe", "lucy"], "Testing that sublist(['bob', 'joe', 'lucy', 'STOP', 'carol', 'james']) returns ['bob', 'joe', 'lucy']") + self.assertEqual(sublist(["STOP"]), [], "Testing that sublist(['STOP']) returns []") + self.assertEqual(sublist(["jackie", "paul", "STOP"]), ["jackie", "paul"], "Testing that sublist(['jackie', 'paul', 'STOP']) returns ['jackie', 'paul']") + +myTests().main() + + +
    + + +

    Write a function called stop_at_z that iterates through a list of strings. Using a while loop, append each string to a new list until the string that appears is z. The function should return the new list.

    +
    + + +def stop_at_z(): + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(stop_at_z(['c', 'b', 'd', 'zebra', 'h', 'r', 'z', 'm', 'a', 'k']), ['c', 'b', 'd', 'zebra', 'h', 'r'], "Testing the function stop_at_z on the input ['c', 'b', 'd', 'zebra', 'h', 'r', 'z', 'm', 'a', 'k'].") + self.assertEqual(stop_at_z(['zoo', 'zika', 'ozzie', 'pizzazz', 'z', 'pizza', 'zap', 'haze']), ['zoo', 'zika', 'ozzie', 'pizzazz'], "Testing the function stop_at_z on the input ['zoo', 'zika', 'ozzie', 'pizzazz', 'z', 'pizza', 'zap', 'haze'].") + self.assertEqual(stop_at_z(['z']), [], "Testing the function stop_at_z on the input ['z'].") + +myTests().main() + + +
    + + +

    Below is a for loop that works. Underneath the for loop, rewrite the problem so that it does the same thing, but using a while loop instead of a for loop. Assign the accumulated total in the while loop code to the variable sum2. Once complete, sum2 should equal sum1.

    +
    + + +sum1 = 0 + +lst = [65, 78, 21, 33] + +for x in lst: + sum1 = sum1 + x + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(sum2, 197, "Testing that sum2 is assigned to correct value.") + self.assertIn('while', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    Challenge: Write a function called beginning that takes a list as input and contains a loop that only stops once the element of the list is the string ‘bye'. What is returned is a list that contains up to the first 10 strings, regardless of where the loop stops. (i.e., if it stops on the 32nd element, the first 10 are returned. If bye is the 5th element, the first 4 are returned.) If you want to make this even more of a challenge, do this without slicing

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(beginning(['water', 'phone', 'home', 'chapstick', 'market', 'headphones', 'bye', 'stickie notes', 'snapchat', 'facebook', 'social media']), ['water', 'phone', 'home', 'chapstick', 'market', 'headphones'], "Testing that beginning returns the correct list on input ['water', 'phone', 'home', 'chapstick', 'market', 'headphones', 'bye', 'stickie notes', 'snapchat', 'facebook', 'social media']") + self.assertEqual(beginning(['bye', 'no', 'yes', 'maybe', 'sorta']), [], "Testing that beginning returns the correct list on input ['bye', 'no', 'yes', 'maybe', 'sorta']") + self.assertEqual(beginning(['hello', 'hi', 'hiyah', 'howdy', 'what up', 'whats good', 'holla', 'good afternoon', 'good morning', 'sup', 'see yah', 'toodel loo', 'night', 'until later', 'peace', 'bye', 'good-bye', 'g night']),['hello', 'hi', 'hiyah', 'howdy', 'what up', 'whats good', 'holla', 'good afternoon', 'good morning', 'sup'] , "Testing that beginning returns the correct list on input ['hello', 'hi', 'hiyah', 'howdy', 'what up', 'whats good', 'holla', 'good afternoon', 'good morning', 'sup', 'see yah', 'toodel loo', 'night', 'until later', 'peace', 'bye', 'good-bye', 'g night']") + +myTests().main() + + +
    +
    diff --git a/pretext/MoreAboutIteration/Exercises.ptx b/pretext/MoreAboutIteration/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/MoreAboutIteration/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/MoreAboutIteration/RandomlyWalkingTurtles.ptx b/pretext/MoreAboutIteration/RandomlyWalkingTurtles.ptx new file mode 100644 index 00000000..f09eb5d3 --- /dev/null +++ b/pretext/MoreAboutIteration/RandomlyWalkingTurtles.ptx @@ -0,0 +1,207 @@ + +

    + Randomly Walking Turtles +

    Suppose we want to entertain ourselves by watching a turtle wander around randomly inside the screen. + When we run the program we want the turtle and program to behave in the following way:

    +

    +

      +
    1. +

      The turtle begins in the center of the screen.

      +
    2. +
    3. +

      Flip a coin. If it's heads then turn to the left 90 degrees. If it's tails + then turn to the right 90 degrees.

      +
    4. +
    5. +

      Take 50 steps forward.

      +
    6. +
    7. +

      If the turtle has moved outside the screen then stop, otherwise go back to + step 2 and repeat.

      +
    8. +
    +

    +

    Notice that we cannot predict how many times the turtle will need to flip the + coin before it wanders out of the screen, so we can't use a for loop in this + case. In fact, although very unlikely, this program might never end, + that is why we call this indefinite iteration.

    +

    So based on the problem description above, we can outline a program as follows:

    + + +create a window and a turtle + +while the turtle is still in the window: + generate a random number between 0 and 1 + if the number == 0 (heads): + turn left + else: + turn right + move the turtle forward 50 + + +

    Now, probably the only thing that seems a bit confusing to you is the part about whether or + not the turtle is still in the screen. But this is the nice thing about programming, we can + delay the tough stuff and get something in our program working right away. The way we are + going to do this is to delegate the work of deciding whether the turtle is still in the screen + or not to a boolean function. Let's call this boolean function isInScreen We can write a very + simple version of this boolean function by having it always return True, or by having it + decide randomly, the point is to have it do something simple so that we can focus on the parts + we already know how to do well and get them working. Since having it always return True would not + be a good idea we will write our version to decide randomly. Let's say that there is a 90% chance + the turtle is still in the window and 10% that the turtle has escaped.

    + + +import random +import turtle + + +def isInScreen(w, t): + if random.random() > 0.1: + return True + else: + return False + + +t = turtle.Turtle() +wn = turtle.Screen() + +t.shape('turtle') +while isInScreen(wn, t): + coin = random.randrange(0, 2) + if coin == 0: # heads + t.left(90) + else: # tails + t.right(90) + + t.forward(50) + +wn.exitonclick() + + +

    Now we have a working program that draws a random walk of our turtle that has a 90% chance of + staying on the screen. We are in a good position, because a large part of our program is working + and we can focus on the next bit of work – deciding whether the turtle is inside the screen + boundaries or not.

    +

    We can find out the width and the height of the screen using the window_width and + window_height methods of the screen object. However, remember that the turtle starts at + position 0,0 in the middle of the screen. So we never want the turtle to go farther right than + width/2 or farther left than negative width/2. We never want the turtle to go further up than + height/2 or further down than negative height/2. Once we know what the boundaries are we can use + some conditionals to check the turtle position against the boundaries and return False if the + turtle is outside or True if the turtle is inside.

    +

    Once we have computed our boundaries we can get the current position of the + turtle and then use conditionals to decide. Here is one implementation:

    + + +def isInScreen(wn,t): + leftBound = -(wn.window_width() / 2) + rightBound = wn.window_width() / 2 + topBound = wn.window_height() / 2 + bottomBound = -(wn.window_height() / 2) + + turtleX = t.xcor() + turtleY = t.ycor() + + stillIn = True + if turtleX > rightBound or turtleX < leftBound: + stillIn = False + if turtleY > topBound or turtleY < bottomBound: + stillIn = False + + return stillIn + + +

    There are lots of ways that the conditional could be written. In this case we have given + stillIn the default value of True and use two if statements to possibly set + the value to False. You could rewrite this to use nested conditionals or elif + statements and set stillIn to True in an else clause.

    +

    Here is the full version of our random walk program.

    + + +import random +import turtle + +def isInScreen(w,t): + leftBound = - w.window_width() / 2 + rightBound = w.window_width() / 2 + topBound = w.window_height() / 2 + bottomBound = -w.window_height() / 2 + + turtleX = t.xcor() + turtleY = t.ycor() + + stillIn = True + if turtleX > rightBound or turtleX < leftBound: + stillIn = False + if turtleY > topBound or turtleY < bottomBound: + stillIn = False + + return stillIn + +t = turtle.Turtle() +wn = turtle.Screen() + +t.shape('turtle') +while isInScreen(wn,t): + coin = random.randrange(0, 2) + if coin == 0: + t.left(90) + else: + t.right(90) + + t.forward(50) + +wn.exitonclick() + + +

    We could have written this program without using a boolean function. You might want to + try to rewrite it using a complex condition on the while statement. However, using a boolean + function makes the program much more readable and easier to understand. It also gives us + another tool to use if this was a larger program and we needed to have a check for whether + the turtle was still in the screen in another part of the program. Another advantage is that + if you ever need to write a similar program, you can reuse this function with confidence the + next time you need it. Breaking up this program into a couple of parts is another example of + functional decomposition.

    +

    + Check your understanding +

    + + +

    In the random walk program in this section, what does the isInScreen function do?

    +
    + + + +

    Returns True if the turtle is still on the screen and False if the turtle is no longer on the screen.

    +
    + +

    The isInScreen function computes the boolean test of whether the turtle is still in the window. It makes the condition of the while loop in the main part of the code simpler.

    +
    +
    + + +

    Uses a while loop to move the turtle randomly until it goes off the screen.

    +
    + +

    The isInScreen function does not contain a while-loop. That loop is outside the isInScreen function.

    +
    +
    + + +

    Turns the turtle right or left at random and moves the turtle forward 50.

    +
    + +

    The isInScreen function does not move the turtle.

    +
    +
    + + +

    Calculates and returns the position of the turtle in the window.

    +
    + +

    While the isInScreen function does use the size of the window and position of the turtle, it does not return the turtle position.

    +
    +
    +
    +
    +
    diff --git a/pretext/MoreAboutIteration/ThewhileStatement.ptx b/pretext/MoreAboutIteration/ThewhileStatement.ptx new file mode 100644 index 00000000..ac9ea9a2 --- /dev/null +++ b/pretext/MoreAboutIteration/ThewhileStatement.ptx @@ -0,0 +1,259 @@ + +
    + The <c>while</c> Statement +
    diff --git a/pretext/MoreAboutIteration/WPInfiniteLoops.ptx b/pretext/MoreAboutIteration/WPInfiniteLoops.ptx new file mode 100644 index 00000000..705dd1a9 --- /dev/null +++ b/pretext/MoreAboutIteration/WPInfiniteLoops.ptx @@ -0,0 +1,60 @@ + +
    + 👩‍💻 Infinite Loops +

    Although the textbook has a time limit which prevents an active code window from running + indefinitely, you'll still have to wait a little while if your program has an ininite loop. If + you accidentally make one outside of the textbook, you won't have that same protection.

    +

    So how can you recognize when you are in danger of making an infinite loop?

    +

    First off, if the variable that you are using to determine if the while loop should continue is + never reset inside the while loop, then your code will have an infinite loop. (Unless of course you use break to + break out of the loop.)

    +

    Additionally, if the while condition is while True: and there is no break, then that is another case of an infinite loop!

    + + +while True: + print("Will this stop?") + +print("We have escaped.") + + +

    Another case where an infinite loop is likely to occur is when you have reassigned the value of the variable used in the while statement in a way that prevents the loop from completing. This is an example below. We're showing it in codelens, which stops the execution after a certain number of steps.

    + + +b = 15 + +while b < 60: + b = 5 + print("Bugs") + b = b + 7 + + +

    Notice how in this case, b is initally set to 15 outside of the while loop, and then reassigned + the value of 5 inside, on line 4. By the time 7 has been added to b on line 6, we then have to + check if b is less than 60. Because it isn't we again run line 4, and set the value of b to 5 + again. There is no way to break out of this loop.

    +

    Sometimes programs can take a while to run, so how can you determine if your code is just talking a while or if it is stuck inside an infinite loop? Print statements are for people, so take advantage of them! You can add print statements to keep track of how your variables are changing as the program processes the instructions given to them. Below is an example of an infinite loop. Try adding print statements to see where it's coming from. When you're done, check out the answer to see what our solution was.

    +

    +

      +
    1. + + + + + + +d = {'x': []} +print("starting the while loop") +while len(d.keys()) <= 2: + print("number of keys in d:", len(d.keys())) + print('Dictionaries') + d['x'].append('d') + print("number of keys in d after appending:", len(d.keys())) +print("end of the while loop") + + + + +
    2. +
    +

    +
    diff --git a/pretext/MoreAboutIteration/intro-indefiniteiteration.ptx b/pretext/MoreAboutIteration/intro-indefiniteiteration.ptx new file mode 100644 index 00000000..cdb154df --- /dev/null +++ b/pretext/MoreAboutIteration/intro-indefiniteiteration.ptx @@ -0,0 +1,36 @@ + +
    + Introduction +

    Computers are often used to automate repetitive tasks. Repeating identical or similar tasks without making + errors is something that computers do well and people do poorly.

    +

    Repeated execution of a sequence of statements is called iteration. Because iteration is so common, Python + provides several language features to make it easier. We've already seen the for statement in a previous chapter. + This is a very common form of iteration in Python. In this chapter we are going to look at the while statement — + another way to have your program do iteration.

    + + Learning Goals +

    +

      +
    • +

      To understand indefinite iteration

      +
    • +
    • +

      To solve problems involving convergence

      +
    • +
    +

    +
    + + Objectives +

    +

      +
    • +

      To apply the while loop for indefinite iteration

      +
    • +
    • +

      To be able to identify while loops that are likely to be infinite loops

      +
    • +
    +

    +
    +
    diff --git a/pretext/MoreAboutIteration/listenerLoop.ptx b/pretext/MoreAboutIteration/listenerLoop.ptx new file mode 100644 index 00000000..412abf59 --- /dev/null +++ b/pretext/MoreAboutIteration/listenerLoop.ptx @@ -0,0 +1,156 @@ + +
    + The Listener Loop +

    At the end of the previous section, we advised using a for loop whenever it will be known at the beginning of the + iteration process how many times the block of code needs to be executed. Usually, in python, you will use a for loop + rather than a while loop. When is it not known at the beginning of the iteration how many times the code block needs + to be executed? The answer is, when it depends on something that happens during the execution.

    +

    One very common pattern is called a listener loop. Inside the while loop there is a function call to get user input. + The loop repeats indefinitely, until a particular input is received.

    + + +theSum = 0 +x = -1 +while (x != 0): + x = int(input("next number to add up (enter 0 if no more numbers): ")) + theSum = theSum + x + +print(theSum) + + +

    This is just our old friend, the accumulation pattern, adding each additional output to the sum-so-far, which is stored + in a variable called theSum and reassigned to that variable on each iteration. Notice that theSum is initialized to 0. + Also notice that we had to initialize x, our variable that stores each input that the user types, before the while loop. + This is typical with while loops, and makes them a little tricky to read and write. We had to initialize it because the + condition x != 0 is checked at the very beginning, before the code block is ever executed. In this case, we picked + an initial value that we knew would make the condition true, to ensure that the while loop's code block would execute at + least once.

    +

    If you're at all unsure about how that code works, try adding print statements inside the while loop that print out the + values of x and theSum.

    + + Other uses of <c>while</c> + + Sentinel Values +

    Indefinite loops are much more common in the real world than definite loops.

    +

    +

      +
    • +

      If you are selling tickets to an event, you don't know in advance how + many tickets you will sell. You keep selling tickets as long as people come + to the door and there's room in the hall.

      +
    • +
    • +

      When the baggage crew unloads a plane, they don't know in advance how many + suitcases there are. They just keep unloading while there are bags left in the + cargo hold. (Why your suitcase is always the last one is an entirely different problem.)

      +
    • +
    • +

      When you go through the checkout line at the grocery, the clerks don't + know in advance how many items there are. They just keep ringing up items as + long as there are more on the conveyor belt.

      +
    • +
    +

    +

    Let's implement the last of these in Python, by asking the user for prices and + keeping a running total and count of items. When the last item is entered, + the program gives the grand total, number of items, and average price. + We'll need these variables:

    +

    +

      +
    • +

      total - this will start at zero

      +
    • +
    • +

      count - the number of items, which also starts at zero

      +
    • +
    • +

      moreItems - a boolean that tells us whether more items are waiting; this starts as True

      +
    • +
    +

    +

    The pseudocode (code written half in English, half in Python) for the body of the loop + looks something like this:

    +
    while moreItems
    +    ask for price
    +    add price to total
    +    add one to count
    +

    This pseudocode has no option to set moreItems to False, so it would run forever. + In a grocery store, there's a little + plastic bar that you put after your last item to separate your groceries from + those of the person behind you; that's how the clerk knows you have no more items. + We don't have a little plastic bar data type in Python, so we'll do the next best thing: we + will use a price of zero to mean this is my last item. In this program, + zero is a sentinel value, a value used to signal the end of the loop. Here's the code:

    + + +def checkout(): + total = 0 + count = 0 + moreItems = True + while moreItems: + price = float(input('Enter price of item (0 when done): ')) + if price != 0: + count = count + 1 + total = total + price + print('Subtotal: $', total) + else: + moreItems = False + average = total / count + print('Total items:', count) + print('Total $', total) + print('Average price per item: $', average) + +checkout() + + +

    There are still a few problems with this program.

    +

    +

      +
    • +

      If you enter a negative number, it will be added to the total and count. Modify the code + so that negative numbers give an error message instead (but don't end the loop) Hint: elif is + your friend.

      +
    • +
    • +

      If you enter zero the first time you are asked for a price, the loop will end, and the program + will try to divide by zero. Use an if/else statement outside the loop to avoid the + division by zero and tell the user that you can't compute an average without data.

      +
    • +
    • +

      This program doesn't display the amounts to two decimal places. You'll be introduced to that in another + chapter.

      +
    • +
    +

    +
    + + Validating Input +

    You can also use a while loop when you want to validate input; when you want to make + sure the user has entered valid input for a prompt. Let's say you want a function + that asks a yes-or-no question. In this case, you want to make sure that the person using + your program enters either a Y for yes or N for no (in either upper or lower case). + Here is a program that uses a while loop to keep asking until it receives a valid answer. + As a preview of coming attractions, it uses + the upper() method which is described in String Methods to convert a string to upper case. + When you run the following code, try typing something other than Y or N to see how the code reacts:

    + + +def get_yes_or_no(message): + valid_input = False + while not valid_input: + answer = input(message) + answer = answer.upper() # convert to upper case + if answer == 'Y' or answer == 'N': + valid_input = True + return answer + +response = get_yes_or_no('Do you like lima beans? Y)es or N)o: ') +if response == 'Y': + print('Great! They are very healthy.') +else: + print('Too bad. If cooked right, they are quite tasty.') + + +
    +
    +
    diff --git a/pretext/MoreAboutIteration/toctree.ptx b/pretext/MoreAboutIteration/toctree.ptx new file mode 100644 index 00000000..35605de0 --- /dev/null +++ b/pretext/MoreAboutIteration/toctree.ptx @@ -0,0 +1,12 @@ + + + More About Iteration + + + + + + + + + diff --git a/pretext/NestedData/ChapterAssessment.ptx b/pretext/NestedData/ChapterAssessment.ptx new file mode 100644 index 00000000..955faa8d --- /dev/null +++ b/pretext/NestedData/ChapterAssessment.ptx @@ -0,0 +1,255 @@ + +
    + Chapter Assessment + + +

    The variable nested contains a nested list. Assign ‘snake' to the variable output using indexing.

    +
    + + +nested = [['dog', 'cat', 'horse'], ['frog', 'turtle', 'snake', 'gecko'], ['hamster', 'gerbil', 'rat', 'ferret']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(output, "snake", "Testing that output is assigned to correct value") + +myTests().main() + + +
    + + +

    Below, a list of lists is provided. Use in and not in tests to create variables with Boolean values. See comments for further instructions.

    +
    + + +lst = [['apple', 'orange', 'banana'], [5, 6, 7, 8, 9.9, 10], ['green', 'yellow', 'purple', 'red']] + +#Test to see if 'yellow' is in the third list of lst. Save to variable ``yellow`` + + +#Test to see if 4 is in the second list of lst. Save to variable ``four`` + + +#Test to see if 'orange' is in the first element of lst. Save to variable ``orange`` + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(yellow, True, "Testing that yellow is assigned to correct value") + def testTwoB(self): + self.assertEqual(four, False, "Testing that four is assigned to correct value") + def testTwoC(self): + self.assertEqual(orange, True, "Testing that orange is assigned to correct value") + +myTests().main() + + +
    + + +

    Below, we've provided a list of lists. Use in statements to create variables with Boolean values - see the ActiveCode window for further directions.

    +
    + + +L = [[5, 8, 7], ['hello', 'hi', 'hola'], [6.6, 1.54, 3.99], ['small', 'large']] + +# Test if 'hola' is in the list L. Save to variable name test1 + +# Test if [5, 8, 7] is in the list L. Save to variable name test2 + +# Test if 6.6 is in the third element of list L. Save to variable name test3 + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testA(self): + self.assertEqual(test1, False, "Testing that test1 has the correct value.") + def testB(self): + self.assertEqual(test2, True, "Testing that test2 has the correct value.") + def testC(self): + self.assertEqual(test3, True, "Testing that test3 has the correct value.") + +myTests().main() + + +
    + + +

    Provided is a nested data structure. Follow the instructions in the comments below. Do not hard code.

    +
    + + +nested = {'data': ['finding', 23, ['exercises', 'hangout', 34]], 'window': ['part', 'whole', [], 'sum', ['math', 'calculus', 'algebra', 'geometry', 'statistics',['physics', 'chemistry', 'biology']]]} + +# Check to see if the string 'data' is a key in nested, if it is, assign True to the variable data, otherwise assign False. + +# Check to see if the integer 24 is in the value of the key data, if it is then assign to the variable twentyfour the value of True, otherwise False. + +# Check to see that the string 'whole' is not in the value of the key window. If it's not, then assign to the variable whole the value of True, otherwise False. + +# Check to see if the string 'physics' is a key in the dictionary nested. If it is, assign to the variable physics, the value of True, otherwise False. + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(data, True, "Testing that data has the correct value.") + def testTwo(self): + self.assertEqual(twentyfour, False, "Testing that twentyfour has the correct value.") + def testThree(self): + self.assertEqual(whole, False, "Testing that whole has the correct value.") + def testFour(self): + self.assertEqual(physics, False, "Testing that physics has the correct value.") + +myTests().main() + + +
    + + +

    The variable nested_d contains a nested dictionary with the gold medal counts for the top four countries in the past three Olympics. Assign the value of Great Britain's gold medal count from the London Olympics to the variable london_gold. Use indexing. Do not hardcode.

    +
    + + +nested_d = {'Beijing':{'China':51, 'USA':36, 'Russia':22, 'Great Britain':19}, 'London':{'USA':46, 'China':38, 'Great Britain':29, 'Russia':22}, 'Rio':{'USA':35, 'Great Britain':22, 'China':20, 'Germany':13}} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(london_gold, 29, "Testing that london_gold is assigned to correct value") + +myTests().main() + + +
    + + +

    Below, we have provided a nested dictionary. Index into the dictionary to create variables that we have listed in the ActiveCode window.

    +
    + + +sports = {'swimming': ['butterfly', 'breaststroke', 'backstroke', 'freestyle'], 'diving': ['springboard', 'platform', 'synchronized'], 'track': ['sprint', 'distance', 'jumps', 'throws'], 'gymnastics': {'women':['vault', 'floor', 'uneven bars', 'balance beam'], 'men': ['vault', 'parallel bars', 'floor', 'rings']}} + +# Assign the string 'backstroke' to the name v1 + +# Assign the string 'platform' to the name v2 + +# Assign the list ['vault', 'floor', 'uneven bars', 'balance beam'] to the name v3 + +# Assign the string 'rings' to the name v4 + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testA(self): + self.assertEqual(v1, 'backstroke', "Testing that v1 was created correctly.") + self.assertNotIn("v1 = 'backstroke'", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('v1 = "backstroke"', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + def testB(self): + self.assertEqual(v2, 'platform', "Testing that v2 was created correctly.") + self.assertNotIn('v2 = "platform"', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn("v2 = 'platform'", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + def testC(self): + self.assertEqual(v3, ['vault', 'floor', 'uneven bars', 'balance beam'], "Testing that v3 was created correctly.") + self.assertNotIn("v3 = ['vault', 'floor', 'uneven bars', 'balance beam']", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + def testD(self): + self.assertEqual(v4, 'rings', "Testing that v4 was created correctly.") + self.assertNotIn("v4 = 'rings'", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('v4 = "rings"', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    Given the dictionary, nested_d, save the medal count for the USA from all three Olympics in the dictionary to the list US_count.

    +
    + + +nested_d = {'Beijing':{'China':51, 'USA':36, 'Russia':22, 'Great Britain':19}, 'London':{'USA':46, 'China':38, 'Great Britain':29, 'Russia':22}, 'Rio':{'USA':35, 'Great Britain':22, 'China':20, 'Germany':13}} + +US_count = [] + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFour(self): + self.assertEqual(sorted(US_count), [35, 36, 46], "Testing that US_count is assigned to correct values.") + +myTests().main() + + +
    + + +

    Iterate through the contents of l_of_l and assign the third element of sublist to a new list called third.

    +
    + + +l_of_l = [['purple', 'mauve', 'blue'], ['red', 'maroon', 'blood orange', 'crimson'], ['sea green', 'cornflower', 'lavender', 'indigo'], ['yellow', 'amarillo', 'mac n cheese', 'golden rod']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(third, ['blue', 'blood orange', 'lavender', 'mac n cheese'], "Testing that third has the correct list assigned to it.") + +myTests().main() + + +
    + + +

    Given below is a list of lists of athletes. Create a list, t, that saves only the athlete's name if it contains the letter t. If it does not contain the letter t, save the athlete name into list other.

    +
    + + +athletes = [['Phelps', 'Lochte', 'Schooling', 'Ledecky', 'Franklin'], ['Felix', 'Bolt', 'Gardner', 'Eaton'], ['Biles', 'Douglas', 'Hamm', 'Raisman', 'Mikulak', 'Dalton']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(t, ['Lochte', 'Bolt', 'Eaton', 'Dalton'], "Testing that t is assigned to correct values.") + def testFiveA(self): + self.assertEqual(other, ['Phelps', 'Schooling', 'Ledecky', 'Franklin', 'Felix', 'Gardner', 'Biles', 'Douglas', 'Hamm', 'Raisman', 'Mikulak'], "Testing that other is assigned to correct values.") + +myTests().main() + + +
    +
    diff --git a/pretext/NestedData/DeepandShallowCopies.ptx b/pretext/NestedData/DeepandShallowCopies.ptx new file mode 100644 index 00000000..4d00d611 --- /dev/null +++ b/pretext/NestedData/DeepandShallowCopies.ptx @@ -0,0 +1,73 @@ + +
    + Deep and Shallow Copies +

    Earlier when we discussed cloning and aliasing lists we had mentioned that simply cloning a list using [:] would take care of any issues + with having two lists unintentionally connected to each other. That was definitely true for making shallow copies (copying a list at the + highest level), but as we get into nested data, and nested lists in particular, the rules become a bit more complicated. We can have second-level aliasing in these cases, which means we need to make deep copies.

    +

    When you copy a nested list, you do not also get copies of the internal lists. This means that if you perform a mutation operation on one + of the original sublists, the copied version will also change. We can see this happen in the following nested list, which only has two levels.

    + + +original = [['dogs', 'puppies'], ['cats', "kittens"]] +copied_version = original[:] +print(copied_version) +print(copied_version is original) +print(copied_version == original) +original[0].append(["canines"]) +print(original) +print("-------- Now look at the copied version -----------") +print(copied_version) + + +

    Assuming that you don't want to have aliased lists inside of your nested list, then you'll need to perform nested iteration.

    + + +original = [['dogs', 'puppies'], ['cats', "kittens"]] +copied_outer_list = [] +for inner_list in original: + copied_inner_list = [] + for item in inner_list: + copied_inner_list.append(item) + copied_outer_list.append(copied_inner_list) +print(copied_outer_list) +original[0].append(["canines"]) +print(original) +print("-------- Now look at the copied version -----------") +print(copied_outer_list) + + +

    Or, equivalently, you could take advantage of the slice operator to do the copying of the inner list.

    + + +original = [['dogs', 'puppies'], ['cats', "kittens"]] +copied_outer_list = [] +for inner_list in original: + copied_inner_list = inner_list[:] + copied_outer_list.append(copied_inner_list) +print(copied_outer_list) +original[0].append(["canines"]) +print(original) +print("-------- Now look at the copied version -----------") +print(copied_outer_list) + + +

    This process above works fine when there are only two layers or levels in a nested list. However, if we want to make a copy of a nested + list that has more than two levels, then we recommend using the copy module. In the copy module there is a method called + deepcopy that will take care of the operation for you.

    + + +import copy +original = [['canines', ['dogs', 'puppies']], ['felines', ['cats', 'kittens']]] +shallow_copy_version = original[:] +deeply_copied_version = copy.deepcopy(original) +original.append("Hi there") +original[0].append(["marsupials"]) +print("-------- Original -----------") +print(original) +print("-------- deep copy -----------") +print(deeply_copied_version) +print("-------- shallow copy -----------") +print(shallow_copy_version) + + +
    diff --git a/pretext/NestedData/Exercises.ptx b/pretext/NestedData/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/NestedData/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/NestedData/ListswithComplexItems.ptx b/pretext/NestedData/ListswithComplexItems.ptx new file mode 100644 index 00000000..cb5d287e --- /dev/null +++ b/pretext/NestedData/ListswithComplexItems.ptx @@ -0,0 +1,195 @@ + +

    + Introduction: Nested Data and Nested Iteration + + Lists with Complex Items +

    The lists we have seen so far have had numbers or strings as items. We've snuck in a few more complex items, but without + ever explicitly discussing what it meant to have more complex items.

    +

    In fact, the items in a list can be any type of python object. For example, we can have a list of lists.

    + + +nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +print(nested1[0]) +print(len(nested1)) +nested1.append(['i']) +print("-------") +for L in nested1: + print(L) + + +

    Line 2 prints out the first item from the list that nested1 is bound to. That item is itself a list, so it prints out + with square brackets. It has length 3, which prints out on line 3. Line 4 adds a new item to nested1. It is a list with + one element, ‘i' (it a list with one element, it's not just the string ‘i').

    +

    Codelens gives a you a reference diagram, a visual display of the contents of nested1.

    + + +nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +print(nested1[0]) +print(len(nested1)) +nested1.append(['i']) +for L in nested1: + print(L) + + +

    When you get to step 4 of the execution, take a look at the object that variable nested1 points to. It is a list of three + items, numbered 0, 1, and 2. The item in slot 1 is small enough that it is shown right there as a list containing items + d and e. The item in slot 0 didn't quite fit, so it is shown in the figure as a pointer to another separate list; + same thing for the item in slot 2, the list ['f', 'g', 'h'].

    +

    There's no special meaning to whether the list is shown embedded or with a pointer to it: that's just CodeLens making the + best use of space that it can. In fact, if you go on to step 5, you'll see that, with the addition of a fourth item, the + list [‘i'], CodeLens has chosen to show all four lists embedded in the top-level list.

    +

    With a nested list, you can make complex expressions to get or set a value in a sub-list.

    + + +nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +y = nested1[1] +print(y) +print(y[0]) + +print([10, 20, 30][1]) +print(nested1[1][0]) + + +

    Lines 1-4 above probably look pretty natural to you. Line 5 illustrates the left to right processing of expressions. nested1[1] evaluates to the second inner list, so nested1[1][1] evaluates to its second element, 'e'. + Line 6 is just a reminder that you index into a literal list, one that is written + out, the same way as you can index into a list referred to by a variable. [10, 20, 30] creates a list. [1] indexes into that list, pulling out the second item, 20.

    +

    Just as with a function call where the return value can be thought of as replacing the text of the function call in an + expression, you can evaluate an expression like that in line 7 from left to right. Because the value of nested1[1] is the + list ['d', 'e'], nested1[1][0] is the same as ['d', 'e'][0]. So line 7 is equivalent to lines 2 and 4; it is a simpler way + of pulling out the first item from the second list.

    +

    At first, expressions like that on line 7 may look foreign. They will soon feel more natural, and you will end up using + them a lot. Once you are comfortable with them, the only time you will write code like lines 2-4 is when you aren't quite + sure what your data's structure is, and so you need to incrementally write and debug your code. Often, you will + start by writing code like lines 2-4, then, once you're sure it's working, replace it with something like line 7.

    +

    You can change values in such lists in the usual ways. You can even use complex expressions to change values. Consider + the following

    + + +nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h'], ['i']] +nested1[1] = [1, 2, 3] +nested1[1][0] = 100 + + +

    The complex items in a list do not have to be lists. They can be tuples or dictionaries. The items in a list do not all + have to be the same type, but you will drive yourself crazy if you have lists of objects of varying types. Save yourself + some headaches and don't do that. Here's a list of dictionaries and some operations on them. Take a look at its visual + representation in codelens.

    + + +nested2 = [{'a': 1, 'b': 3}, {'a': 5, 'c': 90, 5: 50}, {'b': 3, 'c': "yes"}] + + +

    Try practicing some operations to get or set values in a list of dictionaries.

    + + +nested2 = [{'a': 1, 'b': 3}, {'a': 5, 'c': 90, 5: 50}, {'b': 3, 'c': "yes"}] + +#write code to print the value associated with key 'c' in the second dictionary (90) + +#write code to print the value associated with key 'b' in the third dictionary + +#add a fourth dictionary add the end of the list; print something to check your work. + +#change the value associated with 'c' in the third dictionary from "yes" to "no"; print something to check your work + + +

    You can even have a list of functions (!).

    + + +def square(x): + return x*x + +L = [square, abs, lambda x: x+1] + +print("****names****") +for f in L: + print(f) + +print("****call each of them****") +for f in L: + print(f(-2)) + +print("****just the first one in the list****") +print(L[0]) +print(L[0](3)) + + +

    Here, L is a list with three items. All those items are functions. The first is the function square that is defined on + lines 1 and 2. The second is the built-in python function abs. The third is an anonymous function that returns one more + than its input.

    +

    In the first for loop, we do not call the functions, we just output their printed representations. The output + <function square> confirms that square truly is a function object. For some reason, in our online environment, it's not + able to produce a nice printed representation of the built-in function abs, so it just outputs <unknown>

    +

    In the second for loop, we call each of the functions, passing in the value -2 each time and printing whatever value the + function returns.

    +

    The last two lines just emphasize that there's nothing special about lists of functions. They follow all the same rules + for how python treats any other list. Because L[0] picks out the function square, L[0](3) calls the function square, + passing it the parameter 3.

    +

    Step through it in Codelens if that's not all clear to you yet.

    + + +def square(x): + return x*x + +L = [square, abs] + +print("****names****") +for f in L: + print(f) + +print("****call each of them****") +for f in L: + print(f(-2)) + +print("****just the first one in the list****") +print(L[0]) +print(L[0](3)) + + +

    + Check Your Understanding +

    + + +

    1. Below, we have provided a list of lists. Use indexing to assign the element ‘horse' to the variable name idx1.

    +
    + + +animals = [['cat', 'dog', 'mouse'], ['horse', 'cow', 'goat'], ['cheetah', 'giraffe', 'rhino']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(idx1, 'horse', "Testing that idx1 was assigned correctly.") + +myTests().main() + + +
    + + +

    2. Using indexing, retrieve the string ‘willow' from the list and assign that to the variable plant.

    +
    + + +data = ['bagel', 'cream cheese', 'breakfast', 'grits', 'eggs', 'bacon', [34, 9, 73, []], [['willow', 'birch', 'elm'], 'apple', 'peach', 'cherry']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(plant, 'willow', "Testing that plant has the correct value.") + +myTests().main() + + +
    +
    +
    diff --git a/pretext/NestedData/NestedDictionaries.ptx b/pretext/NestedData/NestedDictionaries.ptx new file mode 100644 index 00000000..e1267e4f --- /dev/null +++ b/pretext/NestedData/NestedDictionaries.ptx @@ -0,0 +1,90 @@ + +
    + Nested Dictionaries +

    Just as lists can contain items of any type, the value associated with a key in a dictionary can also be an object of any + type. In particular, it is often useful to have a list or a dictionary as a value in a dictionary. And of course, those + lists or dictionaries can also contain lists and dictionaries. There can be many layers of nesting.

    +

    Only the values in dictionaries can be objects of arbitrary type. The keys in dictionaries must be one of the immutable + data types (numbers, strings, tuples).

    +

    + Check Your Understanding +

    + + +

    Which of the following is a legal assignment statement, after the following code executes?

    + + +d = {'key1': {'a': 5, 'c': 90, 5: 50}, 'key2':{'b': 3, 'c': "yes"}} + + +
    + + + +

    d[5] = {1: 2, 3: 4}

    +
    + +

    5 is a valid key; {1:2, 3:4} is a dictionary with two keys, and is a valid value to associate with key 5.

    +
    +
    + + +

    d[{1:2, 3:4}] = 5

    +
    + +

    Dictionary keys must be of immutable types. A dictionary can't be used as a key in a dictionary.

    +
    +
    + + +

    d['key1']['d'] = d['key2']

    +
    + +

    d['key2'] is {'b': 3, 'c': "yes"}, a python object. It can be bound to the key 'd' in a dictionary {'a': 5, 'c': 90, 5: 50}

    +
    +
    + + +

    d[key2] = 3

    +
    + +

    key2 is an unbound variable here. d['key2'] would be OK.

    +
    +
    +
    +
    + + +

    1. Extract the value associated with the key color and assign it to the variable color. Do not hard code this.

    +
    + + +info = {'personal_data': + {'name': 'Lauren', + 'age': 20, + 'major': 'Information Science', + 'physical_features': + {'color': {'eye': 'blue', + 'hair': 'brown'}, + 'height': "5'8"} + }, + 'other': + {'favorite_colors': ['purple', 'green', 'blue'], + 'interested_in': ['social media', 'intellectual property', 'copyright', 'music', 'books'] + } + } + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(color, {'eye': 'blue', 'hair': 'brown'}, "Testing that color has the correct value.") + +myTests().main() + + +
    +
    diff --git a/pretext/NestedData/NestedIteration.ptx b/pretext/NestedData/NestedIteration.ptx new file mode 100644 index 00000000..592f6c43 --- /dev/null +++ b/pretext/NestedData/NestedIteration.ptx @@ -0,0 +1,96 @@ + +
    + Nested Iteration +

    When you have nested data structures, especially lists and/or dictionaries, you will frequently need nested for loops + to traverse them.

    + + +nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +for x in nested1: + print("level1: ") + for y in x: + print(" level2: " + y) + + +

    Line 3 executes once for each top-level list, three times in all. With each sub-list, + line 5 executes once for each item in the sub-list. Try stepping through it in Codelens to make sure you understand what the nested iteration does.

    + + +nested1 = [['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +for x in nested1: + print("level1: ") + for y in x: + print(" level2: " + y) + + +

    + Check Your Understanding +

    + + +

    Now try rearranging these code fragments to make a function that counts all the leaf items in a nested list like nested1 above, the items at the lowest level of nesting (8 of them in nested1).

    +
    + + + def count_leaves(n): + + + count = 0 + + + for L in n: + + + for x in L: + + + count = count + 1 + + + return count + + +
    + + +

    2. Below, we have provided a list of lists that contain information about people. Write code to create a new list that contains every person's last name, and save that list as last_names.

    +
    + + +info = [['Tina', 'Turner', 1939, 'singer'], ['Matt', 'Damon', 1970, 'actor'], ['Kristen', 'Wiig', 1973, 'comedian'], ['Michael', 'Phelps', 1985, 'swimmer'], ['Barack', 'Obama', 1961, 'president']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(last_names, ['Turner', 'Damon', 'Wiig', 'Phelps', 'Obama'], "Testing that last_names was created correctly.") + +myTests().main() + + +
    + + +

    3. Below, we have provided a list of lists named L. Use nested iteration to save every string containing b into a new list named b_strings.

    +
    + + +L = [['apples', 'bananas', 'oranges', 'blueberries', 'lemons'], ['carrots', 'peas', 'cucumbers', 'green beans'], ['root beer', 'smoothies', 'cranberry juice']] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(b_strings, ['bananas', 'blueberries', 'cucumbers', 'green beans', 'root beer', 'cranberry juice'], "Testing that b_strings was created correctly.") + +myTests().main() + + +
    +
    diff --git a/pretext/NestedData/WPExtractFromNestedData.ptx b/pretext/NestedData/WPExtractFromNestedData.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/NestedData/WPExtractFromNestedData.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/NestedData/WPStructuringNestedData.ptx b/pretext/NestedData/WPStructuringNestedData.ptx new file mode 100644 index 00000000..f8f79fe0 --- /dev/null +++ b/pretext/NestedData/WPStructuringNestedData.ptx @@ -0,0 +1,33 @@ + +
    + 👩‍💻 Structuring Nested Data +

    When constructing your own nested data, it is a good idea to keep the structure consistent across each level. For example, + if you have a list of dictionaries, then each dictionary should have the same structure, meaning the same keys and the same type of value associated with a particular key in all the dictionaries. The reason + for this is because any deviation in the structure that is used will require extra code to handle those special cases. The + more the structure deviates, the more you will have to use special cases.

    +

    For example, let's reconsider this nested iteration, but suppose not all the items in the outer list are lists.

    + + +nested1 = [1, 2, ['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +for x in nested1: + print("level1: ") + for y in x: + print(" level2: {}".format(y)) + + +

    Now the nested iteration fails.

    +

    We can solve this with special casing, a conditional that checks the type.

    + + +nested1 = [1, 2, ['a', 'b', 'c'],['d', 'e'],['f', 'g', 'h']] +for x in nested1: + print("level1: ") + if type(x) is list: + for y in x: + print(" level2: {}".format(y)) + else: + print(x) + + +

    You can imagine how many special case if-thens we'd need, and how complicated the code would get, if we had many layers of nesting but not always a consistent structure.

    +
    diff --git a/pretext/NestedData/jsonlib.ptx b/pretext/NestedData/jsonlib.ptx new file mode 100644 index 00000000..2854fbb2 --- /dev/null +++ b/pretext/NestedData/jsonlib.ptx @@ -0,0 +1,109 @@ + +
    + Processing JSON results +

    JSON stands for JavaScript Object Notation. It looks a lot like the representation of nested dictionaries and lists in + python when we write them out as literals in a program, but with a few small differences (e.g., the word null instead of + None). When your program receives a JSON-formatted string, generally you will want to convert it into a python object, a + list or a dictionary.

    +

    Again, python provides a module for doing this. The module is called json. We will be using two functions in this module, + loads and dumps.

    +

    json.loads() takes a string as input and produces a python object (a dictionary or a list) as output.

    +

    Consider, for example, some data that we might get from Apple's iTunes, in the JSON format:

    + + +import json +a_string = '\n\n\n{\n "resultCount":25,\n "results": [\n{"wrapperType":"track", "kind":"podcast", "collectionId":10892}]}' +print(a_string) +d = json.loads(a_string) +print("------") +print(type(d)) +print(d.keys()) +print(d['resultCount']) +# print(a_string['resultCount']) + + +

    The other function we will use is dumps. It does the inverse of loads. It takes a python object, typically a dictionary or a list, and returns a string, in JSON format. It has a few other parameters. Two useful parameters are sort_keys and indent. When the value True is passed for the sort_keys parameter, the keys of dictionaries are output in alphabetic order with their values. The indent parameter expects an integer. When it is provided, dumps generates a string suitable for displaying to people, with newlines and indentation for nested lists or dictionaries. For example, the following function uses json.dumps to make a human-readable printout of a nested data structure.

    + + +import json +def pretty(obj): + return json.dumps(obj, sort_keys=True, indent=2) + +d = {'key1': {'c': True, 'a': 90, '5': 50}, 'key2':{'b': 3, 'c': "yes"}} + +print(d) +print('--------') +print(pretty(d)) + + +

    + Check Your Understanding +

    + + +

    Because we can only write strings into a file, if we wanted to convert a dictionary d into a json-formatted string so that we could store it in a file, what would we use?

    +
    + + + +

    json.loads(d)

    +
    + +

    loads turns a json-formatted string into a list or dictionary

    +
    +
    + + +

    json.dumps(d)

    +
    + +

    dumps turns a list or dictionary into a json-formatted string

    +
    +
    + + +

    d.json()

    +
    + +

    .json() tries to invoke the json method, but that method is not defined for dictionaries

    +
    +
    +
    +
    + + +

    Say we had a JSON string in the following format. How would you convert it so that it is a python list?

    + + +entertainment = """[{"Library Data": {"count": 3500, "rows": 10, "locations": 3}}, {"Movie Theater Data": {"count": 8, "rows": 25, "locations": 2}}]""" + + +
    + + + +

    entertainment.json()

    +
    + +

    The .json() method is not defined for strings.

    +
    +
    + + +

    json.dumps(entertainment)

    +
    + +

    dumps (dump to string) turns a list or dictionary into a json-formatted string

    +
    +
    + + +

    json.loads(entertainment)

    +
    + +

    loads (load from string) turns a json-formatted string into a list or dictionary

    +
    +
    +
    +
    +
    diff --git a/pretext/NestedData/toctree.ptx b/pretext/NestedData/toctree.ptx new file mode 100644 index 00000000..0fdc394e --- /dev/null +++ b/pretext/NestedData/toctree.ptx @@ -0,0 +1,13 @@ + + + Nested Data and Nested Iteration + + + + + + + + + + diff --git a/pretext/Projects/Exercises.ptx b/pretext/Projects/Exercises.ptx new file mode 100644 index 00000000..0cc2d4da --- /dev/null +++ b/pretext/Projects/Exercises.ptx @@ -0,0 +1,13 @@ + + + Exercises +

    There may be exercises below contributed by professors using Runestone.

    + + Contributed Exercises + {% for q in questions: %} + <div class='oneq full-width'> + {{ q['htmlsrc']|safe }} + </div> +{% endfor %} + +
    diff --git a/pretext/Projects/IntroProjects.ptx b/pretext/Projects/IntroProjects.ptx new file mode 100644 index 00000000..1a9276f2 --- /dev/null +++ b/pretext/Projects/IntroProjects.ptx @@ -0,0 +1,6 @@ + +
    + Introduction to Projects +

    This chapter is mainly here as a placeholder to contain the projects listed in the table on the table of contents for this book. The projects are ordered the same as they are in the table, which is largely the order you would go through them if you were following the table of contents in order.

    +

    Many of the projects can be done with or without functions, and that is indicated in the Skills Required section. Even though functions are in the twelvth chapter some instructors prefer to teach them earlier. Sections 12.1-12.5 can be done any time after sequences if you like.

    +
    diff --git a/pretext/Projects/better_pizza_predictions.ptx b/pretext/Projects/better_pizza_predictions.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/better_pizza_predictions.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/clustering.ptx b/pretext/Projects/clustering.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/clustering.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/common_words.ptx b/pretext/Projects/common_words.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/common_words.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/diy_google.ptx b/pretext/Projects/diy_google.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/diy_google.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/drawing_a_circle.ptx b/pretext/Projects/drawing_a_circle.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/drawing_a_circle.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/encryption.ptx b/pretext/Projects/encryption.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/encryption.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/graphing_with_altair.ptx b/pretext/Projects/graphing_with_altair.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/graphing_with_altair.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/image_processing.ptx b/pretext/Projects/image_processing.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/image_processing.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/image_processing_revisited.ptx b/pretext/Projects/image_processing_revisited.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/image_processing_revisited.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/input_compute_output.ptx b/pretext/Projects/input_compute_output.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/input_compute_output.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/jupyterlite.ptx b/pretext/Projects/jupyterlite.ptx new file mode 100644 index 00000000..72001090 --- /dev/null +++ b/pretext/Projects/jupyterlite.ptx @@ -0,0 +1,12 @@ + +

    + JupyterLite +

    Here is a scratch Jupyter Notebook you can use right in the browser!

    + + +

    Matplotlib, numpy, pandas and many others are pre-installed , if you want to use Altair you will need to execute a cell like this:

    +
    import piplite
    +await piplist.install('altair')
    +

    I don't know how many packages are supported by piplite but its worth trying to see if your favorite is not available.

    +

    Changes to the notebook are saved to localstorage, they are not saved on the Runestone servers (yet). There is no integration with the Runestone grading system (yet).

    +
    diff --git a/pretext/Projects/kiva_graphs.ptx b/pretext/Projects/kiva_graphs.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/kiva_graphs.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/kiva_statistics.ptx b/pretext/Projects/kiva_statistics.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/kiva_statistics.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/l_systems.ptx b/pretext/Projects/l_systems.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/l_systems.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/monte_carlo_simulations.ptx b/pretext/Projects/monte_carlo_simulations.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/Projects/monte_carlo_simulations.ptx @@ -0,0 +1,4 @@ + +

    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Projects/regression_analysis.ptx b/pretext/Projects/regression_analysis.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/regression_analysis.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/roman_numerals.ptx b/pretext/Projects/roman_numerals.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/roman_numerals.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/scaffolded_code.ptx b/pretext/Projects/scaffolded_code.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/scaffolded_code.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/sentiment_analysis.ptx b/pretext/Projects/sentiment_analysis.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/sentiment_analysis.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/split_apply_combine.ptx b/pretext/Projects/split_apply_combine.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/split_apply_combine.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Projects/toctree.ptx b/pretext/Projects/toctree.ptx new file mode 100644 index 00000000..6d2fe9c2 --- /dev/null +++ b/pretext/Projects/toctree.ptx @@ -0,0 +1,31 @@ + + + Projects + + This book includes many projects. These projects are not meant to test your knowledge they are here to give you an opportunity to challenge yourself and your teammates to learn new programming and problem solving skills. Each project builds on the skills learned in the previous projects. If you are brand new to programming you will want to start at the beginning, if you have some prior experience, you can dive in with any project that looks interesting to you. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pretext/Projects/turtle_driving.ptx b/pretext/Projects/turtle_driving.ptx new file mode 100644 index 00000000..9e04d9d6 --- /dev/null +++ b/pretext/Projects/turtle_driving.ptx @@ -0,0 +1,41 @@ + +

    + 🤔 Driving the Turtle +

    +

    This first activity is designed to get you started writing some simple programs in Python using the turtle graphics system. There is a on turtle graphics that will go into more detail but for today you can have some fun and do a lot by simply modifying the following example:

    + + +import turtle + +my_turtle = turtle.Turtle() # create a turtle +my_turtle.color('green') # set the color +my_turtle.forward(50) # draw a green line of length 50 +my_turtle.up() # lift up the tail +my_turtle.forward(50) # move forward 50 without drawing +my_turtle.right(90) # change direction to the right, left works too +my_turtle.down() # put the tail down +my_turtle.backward(100) # draw a green line 100 units long + + +

    The metaphor to have in your head for this is that you have a turtle that you can control from your program. The turtle understands a few basic instructions such as forward, backward, left, right, up, down, color and others that you can look up. You can use these basic instructions to quite a bit, and as we learn more and more about Python programming you will be able to make the turtle do more interesting tasks, for example it is even possible to write a retro style video game using turtle graphics if that is your thing.

    +

    Don't worry about making mistakes, it is normal and happens to even the most experienced programmers. At worst you can simply reload the page if you get stuck. If you try something and don't like it the slider at the top of the window where you enter code can be used to back up to a previous version of your program.

    + + +

    Using the above example to get started create a turtle and draw an interesting picture.

    +
    + + +import turtle + +# Your code here + + +
    +

    + Post Project Questions +

    + + + + +
    diff --git a/pretext/Projects/xkcd_pass.ptx b/pretext/Projects/xkcd_pass.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Projects/xkcd_pass.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/PythonModules/ChapterAssessment.ptx b/pretext/PythonModules/ChapterAssessment.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/PythonModules/ChapterAssessment.ptx @@ -0,0 +1,4 @@ + +

    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/PythonModules/Exercises.ptx b/pretext/PythonModules/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/PythonModules/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/PythonModules/Glossary.ptx b/pretext/PythonModules/Glossary.ptx new file mode 100644 index 00000000..28422c1e --- /dev/null +++ b/pretext/PythonModules/Glossary.ptx @@ -0,0 +1,41 @@ + +

    + Glossary + + + deterministic +

    A process that is repeatable and predictable.

    +
    + + documentation +

    A place where you can go to get detailed information about aspects of your + programming language.

    +
    + + module +

    A file containing Python definitions and statements intended for use in + other Python programs. The contents of a module are made available to + the other program by using the import statement.

    +
    + + namespace +

    A naming system for making names unique, to avoid duplication and confusion. Within a namespace, no two names can be the same.

    +
    + + pseudo-random number +

    A number that is not genuinely random but is instead created algorithmically.

    +
    + + random number +

    A number that is generated in such a way as to exhibit statistical randomness.

    +
    + + random number generator +

    A function that will provide you with random numbers, usually between 0 and 1.

    +
    + + standard library +

    A collection of modules that are part of the normal installation of Python.

    +
    +
    +
    diff --git a/pretext/PythonModules/Therandommodule.ptx b/pretext/PythonModules/Therandommodule.ptx new file mode 100644 index 00000000..c7ca7cd3 --- /dev/null +++ b/pretext/PythonModules/Therandommodule.ptx @@ -0,0 +1,146 @@ + +
    + The <c>random</c> module +

    We often want to use random numbers in programs. Here are a few typical uses:

    +

    +

      +
    • +

      To play a game of chance where the computer needs to throw some dice, pick a + number, or flip a coin,

      +
    • +
    • +

      To shuffle a deck of playing cards randomly,

      +
    • +
    • +

      To randomly allow a new enemy spaceship to appear and shoot at you,

      +
    • +
    • +

      To simulate possible rainfall when we make a computerized model for + estimating the environmental impact of building a dam,

      +
    • +
    • +

      For encrypting your banking session on the Internet.

      +
    • +
    +

    +

    Python provides a module random that helps with tasks like this. You can take a look at it in the documentation. + Here are the key things we can do with it.

    + + +import random + +prob = random.random() +print(prob) + +diceThrow = random.randrange(1,7) # return an int, one of 1,2,3,4,5,6 +print(diceThrow) + + +

    Press the run button a number of times. Note that the values change each time. These are random numbers.

    +

    The randrange function generates an integer between its lower and upper argument where the lower bound is included, but the upper bound is excluded. So, randrange(1,7) will include numbers from 1-6. If you omit the first parameter it is assumed to be 0 so randrange(10) will give you numbers from 0-9. All the values have an equal probability + of occurring (i.e. the results are uniformly distributed).

    +

    The random() function returns a floating point number in the range [0.0, 1.0) — the square bracket means closed + interval on the left and the round parenthesis means open interval on the right. In other words, 0.0 is possible, + but all returned numbers will be strictly less than 1.0. It is usual to scale the results after calling this method, + to get them into a range suitable for your application.

    +

    In the case shown below, we've converted the result of the method call to a number in the range [0.0, 5.0). Once more, + these are uniformly distributed numbers — numbers close to 0 are just as likely to occur as numbers close to 3, or + numbers close to 5. If you continue to press the run button you will see random values between 0.0 and up to but not + including 5.0.

    + + +import random + +prob = random.random() +result = prob * 5 +print(result) + + +

    It is important to note that random number generators are based on a deterministic algorithm — repeatable and + predictable. So they're called pseudo-random generators — they are not genuinely random. They start with a seed + value. Each time you ask for another random number, you'll get one based on the current seed attribute, and the state + of the seed (which is one of the attributes of the generator) will be updated. The good news is that each time you run + your program, the seed value is likely to be different meaning that even though the random numbers are being created + algorithmically, you will likely get random behavior each time you execute.

    +

    + Check your understanding +

    + + +

    The correct code to generate a random number between 1 and 100 (inclusive) is:

    +
    + + + +

    prob = random.randrange(1, 101)

    +
    + +

    This will generate a number between 1 and 101, but does not include 101.

    +
    +
    + + +

    prob = random.randrange(1, 100)

    +
    + +

    This will generate a number between 1 and 100, but does not include 100. The highest value generated will be 99.

    +
    +
    + + +

    prob = random.randrange(0, 101)

    +
    + +

    This will generate a number between 0 and 100. The lowest value generated is 0. The highest value generated will be 100.

    +
    +
    + + +

    prob = random.randrange(0, 100)

    +
    + +

    This will generate a number between 0 and 100, but does not include 100. The lowest value generated is 0 and the highest value generated will be 99.

    +
    +
    +
    +
    + + +

    One reason that lotteries don't use computers to generate random numbers is:

    +
    + + + +

    There is no computer on the stage for the drawing.

    +
    + +

    They could easily put one there.

    +
    +
    + + +

    Because computers don't really generate random numbers, they generate pseudo-random numbers.

    +
    + +

    Computers generate random numbers using a deterministic algorithm. This means that if anyone ever found out the algorithm they could accurately predict the next value to be generated and would always win the lottery.

    +
    +
    + + +

    They would just generate the same numbers over and over again.

    +
    + +

    This might happen if the same seed value was used over and over again, but they could make sure this was not the case.

    +
    +
    + + +

    The computer can't tell what values were already selected, so it might generate all 5's instead of 5 unique numbers.

    +
    + +

    While a programmer would need to ensure the computer did not select the same number more than once, it is easy to ensure this.

    +
    +
    +
    +
    +
    diff --git a/pretext/PythonModules/intro-ModulesandGettingHelp.ptx b/pretext/PythonModules/intro-ModulesandGettingHelp.ptx new file mode 100644 index 00000000..2917cd91 --- /dev/null +++ b/pretext/PythonModules/intro-ModulesandGettingHelp.ptx @@ -0,0 +1,183 @@ + +
    + Modules +
    diff --git a/pretext/PythonModules/intro-PythonModules.ptx b/pretext/PythonModules/intro-PythonModules.ptx new file mode 100644 index 00000000..27ab09a0 --- /dev/null +++ b/pretext/PythonModules/intro-PythonModules.ptx @@ -0,0 +1,33 @@ + +
    + Introduction to Python Modules +

    One of the best things about the Python programming language is the ecosystem that surrounds it. This chapter introduces you to some of the amazing packages that allow you to solve real world problems without starting from scratch.

    + +

    As you may have gathered, Python provides us the ability to use modules to do everything from sending emails to image processing to complex machine learning. But, even though Python gives us a tremendous amount of power from these modules you still need to know the python basics in order to glue everything together. We will start by looking at a module used to generate random numbers to learn how to make use of other modules in your programs.

    + + Learning Goals +

    +

      +
    • +

      Understand that Python is extensible through modules

      +
    • +
    +

    +
    + + Objectives +

    +

      +
    • +

      To import an entire module

      +
    • +
    • +

      To import a single function from a module

      +
    • +
    • +

      To import a module giving it an alias

      +
    • +
    +

    +
    +
    diff --git a/pretext/PythonModules/toctree.ptx b/pretext/PythonModules/toctree.ptx new file mode 100644 index 00000000..956e65cd --- /dev/null +++ b/pretext/PythonModules/toctree.ptx @@ -0,0 +1,10 @@ + + + Python Modules + + + + + + + diff --git a/pretext/PythonTurtle/AFewMoreturtleMethodsandObservations.ptx b/pretext/PythonTurtle/AFewMoreturtleMethodsandObservations.ptx new file mode 100644 index 00000000..21af4955 --- /dev/null +++ b/pretext/PythonTurtle/AFewMoreturtleMethodsandObservations.ptx @@ -0,0 +1,161 @@ + +
    + A Few More <c>turtle</c> Methods and Observations +

    Here are a few more things that you might find useful as you write programs that use turtles.

    +

    +

      +
    • +

      Turtle methods can use negative angles or distances. So tess.forward(-100) will move + tess backwards, and tess.left(-30) turns her to the right. Additionally, because there + are 360 degrees in a circle, turning 30 to the left will leave you facing in the same + direction as turning 330 to the right! (The on-screen animation will differ, though + — you will be able to tell if tess is turning clockwise or counter-clockwise!)

      +

      This suggests that we don't need both a left and a right turn method — we could be + minimalists, and just have one method. There is also a backward method. (If you are + very nerdy, you might enjoy saying alex.backward(-100) to move alex forward!)

      +

      Reviewing a few basic facts about geometry and number lines, like we've done here is a + good start if we're going to play with turtles.

      +
    • +
    • +

      A turtle's pen can be picked up or put down. This allows us to move a turtle + to a different place without drawing a line. The methods are up and down. + Note that the methods penup and pendown do the same thing.

      + + +alex.up() +alex.forward(100) # this moves alex, but no line is drawn +alex.down() + + +
    • +
    • +

      Every turtle can have its own shape. The ones available out of the box are arrow, + blank, circle, classic, square, triangle, turtle.

      + + +... +alex.shape("turtle") +... + + +
    • +
    • +

      You can speed up or slow down the turtle's animation speed. (Animation + controls how quickly the turtle turns and moves forward). Speed settings can + be set between 1 (slowest) to 10 (fastest). But if you set the speed to 0, + it has a special meaning — turn off animation and go as fast as possible.

      + + +alex.speed(10) + + +
    • +
    • +

      A turtle can stamp its footprint onto the canvas, and this will remain after + the turtle has moved somewhere else. Stamping works even when the pen is up.

      +
    • +
    +

    +

    Let's do an example that shows off some of these new features.

    + + +import turtle +wn = turtle.Screen() +wn.bgcolor("lightgreen") +tess = turtle.Turtle() +tess.color("blue") +tess.shape("turtle") + +dist = 5 +tess.up() # this is new +for _ in range(30): # start with size = 5 and grow by 2 + tess.stamp() # leave an impression on the canvas + tess.forward(dist) # move tess along + tess.right(24) # and turn her + dist = dist + 2 +wn.exitonclick() + + +

    If you are curious about how far the turtle is traveling each time the for loop iterates, you can add a print + statement inside of the for loop to print out the value of dist.

    +

    One more thing to be careful about. All except one of the shapes you see on the screen here are + footprints created by stamp. But the program still only has one turtle instance — can you + figure out which one is the real tess? (Hint: if you're not sure, write a new line of code after the + for loop to change tess' color, or to put her pen down and draw a line, or to change her shape, etc.)

    +

    + Mixed up program +

    + + +

    The following program uses the stamp method to create a circle of turtle shapes as shown to the left:

    + image of a circle of turtle shapes +

    But the lines are mixed up. The program should do all necessary set-up, create the turtle, set the shape to turtle, and pick up the pen. Then the turtle should repeat the following ten times: go forward 50 pixels, leave a copy of the turtle at the current position, reverse for 50 pixels, and then turn right 36 degrees. After the loop, set the window to close when the user clicks in it.

    +

    Drag the blocks of statements from the left column to the right column and put them in the right order with the correct indention. Click on Check Me to see if you are right. You will be told if any of the lines are in the wrong order or are incorrectly indented.

    +
    + + + import turtle + wn = turtle.Screen() + jose = turtle.Turtle() + jose.shape("turtle") + jose.penup() + + + for size in range(10): + + + jose.forward(50) + + + jose.stamp() + + + jose.forward(-50) + + + jose.right(36) + + + wn.exitonclick() + + +
    +

    + Mixed up program +

    + + +

    The following program uses the stamp method to create a line of turtle shapes as shown to the left:

    + image of a line of turtle shapes +

    But the lines are mixed up. The program should do all necessary set-up, create the turtle, set the shape to turtle, and pick up the pen. Then the turtle should repeat the following three times: go forward 50 pixels and leave a copy of the turtle at the current position. After the loop, set the window to close when the user clicks in it.

    +

    Drag the blocks of statements from the left column to the right column and put them in the right order with the correct indention. Click on Check Me to see if you are right. You will be told if any of the lines are in the wrong order or are incorrectly indented.

    +
    + + + import turtle + wn = turtle.Screen() + + + nikea = turtle.Turtle() + + + nikea.shape("turtle") + + + nikea.penup() + + + for size in range(3): + + + nikea.forward(50) + + + nikea.stamp() + + + wn.exitonclick() + + +
    +
    diff --git a/pretext/PythonTurtle/Exercises.ptx b/pretext/PythonTurtle/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/PythonTurtle/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/PythonTurtle/InstancesAHerdofTurtles.ptx b/pretext/PythonTurtle/InstancesAHerdofTurtles.ptx new file mode 100644 index 00000000..18553dfe --- /dev/null +++ b/pretext/PythonTurtle/InstancesAHerdofTurtles.ptx @@ -0,0 +1,178 @@ + +

    + Instances: A Herd of Turtles +

    Just like we can have many different integers in a program, we can have many + turtles. Each of them is an independent object and we call each one an instance of the + Turtle type (class). Each instance has its own attributes and methods — so alex might + draw with a thin pink pen and be at some position, while tess might be going in her own + direction with a fat black pen. So here is what happens when alex completes a square and + tess completes her triangle:

    + + +import turtle +wn = turtle.Screen() # Set up the window and its attributes +wn.bgcolor("lightgreen") + + +tess = turtle.Turtle() # create tess and set his pen width +tess.pensize(5) + +alex = turtle.Turtle() # create alex +alex.color("hotpink") # set his color + +tess.forward(80) # Let tess draw an equilateral triangle +tess.left(120) +tess.forward(80) +tess.left(120) +tess.forward(80) +tess.left(120) # complete the triangle + +tess.right(180) # turn tess around +tess.forward(80) # move her away from the origin so we can see alex + +alex.forward(50) # make alex draw a square +alex.left(90) +alex.forward(50) +alex.left(90) +alex.forward(50) +alex.left(90) +alex.forward(50) +alex.left(90) + +wn.exitonclick() + + +

    Here are some How to think like a computer scientist observations:

    +

    +

      +
    • +

      There are 360 degrees in a full circle. If you add up all the turns that a + turtle makes, no matter what steps occurred between the turns, you can + easily figure out if they add up to some multiple of 360. This should + convince you that alex is facing in exactly the same direction as he was when + he was first created. (Geometry conventions have 0 degrees facing East and + that is the case here too!)

      +
    • +
    • +

      We could have left out the last turn for alex, but that would not have been + as satisfying. If you're asked to draw a closed shape like a square or a + rectangle, it is a good idea to complete all the turns and to leave the + turtle back where it started, facing the same direction as it started in. + This makes reasoning about the program and composing chunks of code into + bigger programs easier for us humans!

      +
    • +
    • +

      We did the same with tess: she drew her triangle and turned through a full + 360 degress. Then we turned her around and moved her aside. Even the blank + line 18 is a hint about how the programmer's mental chunking is working: in + big terms, tess' movements were chunked as draw the triangle (lines 12-17) + and then move away from the origin (lines 19 and 20).

      +
    • +
    • +

      One of the key uses for comments is to record your mental chunking, and big + ideas. They're not always explicit in the code.

      +
    • +
    • +

      And, uh-huh, two turtles may not be enough for a herd, but you get the idea!

      +
    • +
    +

    +

    + Check your understanding +

    + + +

    True or False: You can only have one active turtle at a time. If you create a second one, you will no longer be able to access or use the first.

    +
    + + + +

    True

    +
    + +

    You can create and use as many turtles as you like. As long as they have different names, you can operate them independently, and make them move in any order you like. To convince yourself this is true, try interleaving the instructions for alex and tess in ActiveCode box 3.

    +
    +
    + + +

    False

    +
    + +

    You can create and use as many turtles as you like. As long as they have different names, you can operate them independently, and make them move in any order you like. If you are not totally convinced, try interleaving the instructions for alex and tess in ActiveCode box 3.

    +
    +
    +
    +
    +

    + Mixed up programs +

    + + +

    The following program has one turtle, jamal, draw a capital L in blue and then another, tina, draw a line to the west in orange as shown to the left:

    + image of a capital letter L in blue color drawn by one Turtle and a line to the west in orange color drawn by another Turtle. Both the Turtles have same starting point. +

    The program should do all set-up, have jamal draw the L, and then have tina draw the line. Finally, it should set the window to close when the user clicks in it.

    +

    Drag the blocks of statements from the left column to the right column and put them in the right order. Then click on Check Me to see if you are right. You will be told if any of the lines are in the wrong order.

    +
    + + + import turtle + wn = turtle.Screen() + + + jamal = turtle.Turtle() + jamal.pensize(10) + jamal.color("blue") + jamal.right(90) + jamal.forward(150) + + + jamal.left(90) + jamal.forward(75) + + + tina = turtle.Turtle() + tina.pensize(10) + tina.color("orange") + tina.left(180) + tina.forward(75) + + + wn.exitonclick() + + +
    + + +

    The following program has one turtle, jamal, draw a line to the north in blue and then another, tina, draw a line to the east in orange as shown to the left,

    + Image of a line to the north in blue color drawn by one Turtle and a line to the east in orange drawn by another Turtle. Both the Turtles have a same starting point. +

    The program should import the turtle module, get the window to draw on, create the turtle jamal, have it draw a line to the north, then create the turtle tina, and have it draw a line to the east. Finally, it should set the window to close when the user clicks in it.

    +

    Drag the blocks of statements from the left column to the right column and put them in the right order. Then click on Check Me to see if you are right. You will be told if any of the lines are in the wrong order.

    +
    + + + import turtle + + + wn = turtle.Screen() + + + jamal = turtle.Turtle() + jamal.color("blue") + jamal.pensize(10) + + + jamal.left(90) + jamal.forward(150) + + + tina = turtle.Turtle() + tina.pensize(10) + tina.color("orange") + tina.forward(150) + + + wn.exitonclick() + + +
    +
    diff --git a/pretext/PythonTurtle/ObjectInstances.ptx b/pretext/PythonTurtle/ObjectInstances.ptx new file mode 100644 index 00000000..6ff5c87c --- /dev/null +++ b/pretext/PythonTurtle/ObjectInstances.ptx @@ -0,0 +1,31 @@ + +
    + Object Oriented Concepts +

    It's been fun drawing things with the turtles. In the process, we've slipped in some new concepts and terms. Let's pull them out and examine them a little more carefully.

    + + User-defined Classes +

    First, just as Python provides a way to define new functions in your programs, it also provides a way to define new classes of objects. Later in the book you will learn how to define functions, and much later, new classes of objects. For now, you just need to understand how to use them.

    +
    + + Instances +

    Given a class like Turtle or Screen, we create a new instance with a syntax that looks like a function call, Turtle(). The Python interpreter figures out that Turtle is a class rather than a function, and so it creates a new instance of the class and returns it. Since the Turtle class was defined in a separate module, (confusingly, also named turtle), we had to refer to the class as turtle.Turtle. Thus, in the programs we wrote turtle.Turtle() to make a new turtle. We could also write turtle.Screen() to make a new window for our turtles to paint in.

    +
    + + Attributes +

    Each instance can have attributes, sometimes called instance variables. These are just like other variables in Python. We use assignment statements, with an =, to assign values to them. Thus, if alex and tess are variables bound to two instances of the class Turtle, we can assign values to an attribute, and we can look up those attributes. For example, the following code would print out 1100.

    + + +alex.price = 500 +tess.price = 600 +print(alex.price + tess.price) + + +
    + + Methods +

    Classes have associated methods, which are just a special kind of function. Consider the expression alex.forward(50) The interpreter first looks up alex and finds that it is an instance of the class Turtle. Then it looks up the attribute forward and finds that it is a method. Since there is a left parenthesis directly following, the interpreter invokes the method, passing 50 as a parameter.

    +

    The only difference between a method invocation and other function calls is that the object instance itself is also passed as a parameter. Thus alex.forward(50) moves alex, while tess.forward(50) moves tess.

    +

    Some of the methods of the Turtle class set attributes that affect the actions of other methods. For example, the method pensize changes the width of the drawing pen, and the color method changes the pen's color.

    +

    Methods return values, just as functions do. However, none of the methods of the Turtle class that you have used return useful values the way the len function does. Thus, it would not make sense to build a complex expression like tess.forward(50) + 75. It could make sense, however to put a complex expression inside the parentheses: tess.forward(x + y)

    +
    +
    diff --git a/pretext/PythonTurtle/OurFirstTurtleProgram.ptx b/pretext/PythonTurtle/OurFirstTurtleProgram.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/PythonTurtle/OurFirstTurtleProgram.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/PythonTurtle/RepetitionwithaForLoop.ptx b/pretext/PythonTurtle/RepetitionwithaForLoop.ptx new file mode 100644 index 00000000..1cc96021 --- /dev/null +++ b/pretext/PythonTurtle/RepetitionwithaForLoop.ptx @@ -0,0 +1,58 @@ + +
    + Repetition with a For Loop +

    Some of the programs we've seen so far are a bit tedious to type. If we want to make a + repetitive pattern in our drawings, then it can take many lines of code. Thankfully, Python + has a few ways for making this kind of task easier. For now you'll get a brief preview of a helpful control structure and function in Python which you will learn about later.

    +

    The control structure is called a for loop. If you've learned other programming languages + then you may be familiar with what it does but the structure may be new. A for loop allows + Python to execute a program in a non-linear fashion. Instead of evaluating the code line by line until it reaches the end, once the program reaches a for loop, it will tell the program to execute a set of lines repeatedly. After doing all that, the program will then continue to evaluate and execute whatever is below the for loop.

    +

    In the code below, we make use of the range function to specify how many times the code inside the for loop will execute. In a later chapter, we will explain exactly what the range function is doing and how it works with the for loop. For now, just try to understand what happens when the following code executes.

    + + +print("This will execute first") + +for _ in range(3): + print("This line will execute three times") + print("This line will also execute three times") + +print("Now we are outside of the for loop!") + + +

    There are a few things to notice here for when you use this later on. First, is that the two print statements on line 4 and 5 are executed three times, but we don't print line 4 + three times and then print line 5 three times. Instead, we print line 4, then line 5. Once + that is done the for loop iterates, or brings the program back to the beginning of the for + loop, and continues to print out lines 4 and 5 again until it has printed them both a total + of three times.

    +

    Second, these lines were printed the same number of times as is inside the range function. If we + wanted to print them more or fewer times, then we would just need to change the number + inside of the parentheses on line 3.

    +

    Finally, the indentation is important here. All of the statements that were printed out + multiple times were indented under the for loop. Once we stopped indenting those lines, + then the program was outside of the for loop and it would continue to execute linearly. If + you'd like to watch the execution, checkout the code above in codelens!

    +

    Now it's time to combine this with the Turtle module. We can do a lot of cool stuff if we combine these two things! Below is code to do just that. Try to predict what the program will do before running it.

    + + +import turtle +wn = turtle.Screen() + +elan = turtle.Turtle() + +distance = 50 +for _ in range(10): + elan.forward(distance) + elan.right(90) + distance = distance + 10 + + + +

    Try it out yourself in the space below. What can you make?

    + + +import turtle +wn = turtle.Screen() + + +
    +
    diff --git a/pretext/PythonTurtle/SummaryOfTurtleMethods.ptx b/pretext/PythonTurtle/SummaryOfTurtleMethods.ptx new file mode 100644 index 00000000..78db2bcb --- /dev/null +++ b/pretext/PythonTurtle/SummaryOfTurtleMethods.ptx @@ -0,0 +1,220 @@ + +
    + Summary of Turtle Methods + + + + + Method + + + Parameters + + + Description + + + + + Turtle + + + None + + + Creates and returns a new turtle object + + + + + forward + + + distance + + + Moves the turtle forward + + + + + backward + + + distance + + + Moves the turle backward + + + + + right + + + angle + + + Turns the turtle clockwise + + + + + left + + + angle + + + Turns the turtle counter clockwise + + + + + up + + + None + + + Picks up the turtles tail + + + + + down + + + None + + + Puts down the turtles tail + + + + + color + + + color name + + + Changes the color of the turtle's tail + + + + + fillcolor + + + color name + + + Changes the color of the turtle will use to fill a polygon + + + + + heading + + + None + + + Returns the current heading + + + + + position + + + None + + + Returns the current position + + + + + goto + + + x,y + + + Move the turtle to position x,y + + + + + begin_fill + + + None + + + Remember the starting point for a filled polygon + + + + + end_fill + + + None + + + Close the polygon and fill with the current fill color + + + + + dot + + + None + + + Leave a dot at the current position + + + + + stamp + + + None + + + Leaves an impression of a turtle shape at the current location + + + + + shape + + + shapename + + + Should be ‘arrow', ‘triangle', ‘classic', ‘turtle', ‘circle', or ‘square' + + + + + speed + + + integer + + + 0 = no animation, fastest; 1 = slowest; 10 = very fast + + + +
    +

    Once you are comfortable with the basics of turtle graphics you can read about even + more options on the Python Docs Website. Note that we + will describe Python Docs in more detail in the next chapter.

    +
    diff --git a/pretext/PythonTurtle/WPCommonTurtleErrors.ptx b/pretext/PythonTurtle/WPCommonTurtleErrors.ptx new file mode 100644 index 00000000..047448ba --- /dev/null +++ b/pretext/PythonTurtle/WPCommonTurtleErrors.ptx @@ -0,0 +1,90 @@ + +
    + 👩‍💻 Common <c>turtle</c> Errors +

    Below we'll describe common errors that beginning programmers encounter when writing turtle code. + Some of these errors can be applied to other instances as well!

    +

    +

      +
    1. +

      Forgetting a Parenthesis

      +
    2. +
    +

    + + +import turtle +wn = turtle.Screen() +alex = turtle.Turtle() + +alex.forward(50 +alex.right(90) + + +

    When you run the example above you'll see how an error occurs. This is because we accidentally left off the ) when we + tell alex to move forward. This is a common error for programmers of any skill level - it's easy to miss one and not + notice! If you get a syntax error like this or - expecially in this textbook - one that says there was bad syntax on a + line that isn't visible to you then likely you're missing a parenthesis, quotation, or bracket.

    +

    +

      +
    1. +

      Issues with Variable Names

      +
    2. +
    +

    +

    Sometimes we misspell a variable name, either by making it capitalized when it wasn't previously capitalized or swiching + letters around. Other times we accidentally refer to the wrong variable name. Checkout the code below for some examples.

    + + +import turtle +wn = turtle.Screen() +alex = Turtle.turtle() #switched turtle and Turtle + +alex.forward(50) +alex.right(90) + + + + +import turtle +wn = turtle.Screen() +june = turtle.Turtle() + +june.forward(50) +right.june(90) #switched the variable for jane with the direction to turn in + + + + +import turtle +wn = turtle.Screen() +june = turtle.Turtle() + +june.forward(50) +June.right(90) #capitalized the variable June even though all others were lowercase + + +

    +

      +
    1. +

      Incorrect Arguments

      +
    2. +
    +

    +

    We can also incorrectly provide arguments to a method or function. When that happens, you'll see an error message like the + one below.

    + + +import turtle +wn = turtle.Screen() +june = turtle.Turtle() + +for _ in range(): + june.color("green", "yellow") + june.forward("50") + june.right(90) + + +

    We wanted to iterate and draw a square, but we forgot to specify how many times we should iterate over the for loop. As a + result, we ran into an error because the range function requires at least one argument. Try fixing this so that the code + builds a square. Do you think you'll run into other problems? Predict what will happen and then try it out!

    +
    diff --git a/pretext/PythonTurtle/WPIncrementalProgramming.ptx b/pretext/PythonTurtle/WPIncrementalProgramming.ptx new file mode 100644 index 00000000..2f624b7f --- /dev/null +++ b/pretext/PythonTurtle/WPIncrementalProgramming.ptx @@ -0,0 +1,43 @@ + +
    + 👩‍💻 Incremental Programming +

    By now you've likely come across occasions where your code will be long or complex. If you + approach problems like this by writing out all the code and then running it, you'll likely + find yourself frustrated by the debugging process. There are ways to make programming easier + though!

    +

    1. Start Small This is probably the single biggest piece of advice for programmers at + every level. Of course it's tempting to sit down and crank out an entire program at once. But, + when the program – inevitably – does not work then you have a myriad of options for things + that might be wrong. Where to start? Where to look first? How to figure out what went wrong? + I'll get to that in the next section. So, start with something really small. Maybe just two + lines and then make sure that runs ok. Hitting the run button is quick and easy, and gives you + immediate feedback about whether what you have just done is ok or not. Another immediate + benefit of having something small working is that you have something to turn in. Turning in a + small, incomplete program, is almost always better than nothing.

    +

    2. Keep it working Once you have a small part of your program working the next step is + to figure out something small to add to it. If you keep adding small pieces of the program one + at a time, it is much easier to figure out what went wrong, as it is most likely that the + problem is going to be in the new code you have just added. Less new code means its easier to + figure out where the problem is.

    +

    This notion of Get something working and keep it working is a mantra that you can repeat + throughout your career as a programmer. It's a great way to avoid the frustrations mentioned + above. Think of it this way. Every time you have a little success, your brain releases a tiny + bit of chemical that makes you happy. So, you can keep yourself happy and make programming + more enjoyable by creating lots of small victories for yourself.

    +

    Below we have already started to build a house. To practice incremental programming, try drawing + the rest of the house. Each time you draw something new on the screen, run the program to see if + it executed in the way that you expected!

    + + +import turtle +wn = turtle.Screen() +bob = turtle.Turtle() +bob.right(90) +bob.forward(50) +bob.left(90) +bob.forward(50) + +# Add your code below! + + +
    diff --git a/pretext/PythonTurtle/intro-HelloLittleTurtles.ptx b/pretext/PythonTurtle/intro-HelloLittleTurtles.ptx new file mode 100644 index 00000000..c292362d --- /dev/null +++ b/pretext/PythonTurtle/intro-HelloLittleTurtles.ptx @@ -0,0 +1,52 @@ + +
    + Hello Little Turtles! +
    diff --git a/pretext/PythonTurtle/toctree.ptx b/pretext/PythonTurtle/toctree.ptx new file mode 100644 index 00000000..9485de4d --- /dev/null +++ b/pretext/PythonTurtle/toctree.ptx @@ -0,0 +1,15 @@ + + + Python Turtle + + + + + + + + + + + + diff --git a/pretext/PythonTurtle/week1a3.ptx b/pretext/PythonTurtle/week1a3.ptx new file mode 100644 index 00000000..ad462ec2 --- /dev/null +++ b/pretext/PythonTurtle/week1a3.ptx @@ -0,0 +1,338 @@ + +
    + Chapter Assessment - Turtle and Object Mechanics +

    + Check your understanding +

    + + +

    What are correct ways to tell a turtle named Tex to move forward 20 pixels? Select as many as apply.

    +
    + + + +

    Tex.forward(20)

    +
    + +

    This is a correct way to move a turtle forward.

    +
    +
    + + +

    forward() + 20

    +
    + +

    This does not use the turtle method necessary to move a turtle forward. Additionally, how would the program know what turtle should be moving?

    +
    +
    + + +

    forward(20)

    +
    + +

    This does not use the turtle method necessary to move a turtle forward. Additionally, how would the program know what turtle should be moving?

    +
    +
    + + +

    forward(20).Tex

    +
    + +

    This is not the correct structure to execute the task.

    +
    +
    + + +

    Tex.forward(10 + 10)

    +
    + +

    You are allowed to write expressions inside of methods, so this is correctly written.

    +
    +
    +
    +
    + + +

    Which is the correct way to make a new instance of the Turtle class?

    +
    + + + +

    turtle(Turtle)

    +
    + +

    When making a new instace of the turtle class, you need to use dot notation.

    +
    +
    + + +

    turtle.Turtle()

    +
    + +

    Yes, this is the correct way.

    +
    +
    + + +

    Turtle.turtle()

    +
    + +

    turtle represents the class and should be first.

    +
    +
    + + +

    Turtle(turtle)

    +
    + +

    When making a new instace of the turtle class, you need to use dot notation.

    +
    +
    +
    +
    + + +

    What does each instance of the Turtle class represent?

    +
    + + + +

    The turtle class.

    +
    + +

    Though each instance does use the turtle class, this is not the best answer.

    +
    +
    + + +

    The same turtle that is used in each drawing your programs make.

    +
    + +

    Each instance that is made using the turtle class is unique. Remember how you can have multiple 'turtles' in a single drawing? Each of those are different turtles but they are all instances of the turtle class.

    +
    +
    + + +

    A unique 'turtle' that you can use to draw.

    +
    + +

    Yes, an instance of the turtle class represents a unique turtle. The turtle class is like a stencil or mold that can be used to make as many turtles as you would like.

    +
    +
    +
    +
    + + +

    Select all of the following things that methods can do:

    +
    + + + +

    Change the value of an attribute.

    +
    + +

    Methods can change the value that is associated with an attribute.

    +
    +
    + + +

    Return values.

    +
    + +

    Methods can return values.

    +
    +
    + + +

    Create new attributes of an instance and set their values.

    +
    + +

    Attributes do not need to be pre-declared; any code can add a new attribute to an instance just by assigning a value to it.

    +
    +
    + + +

    Delete object instances.

    +
    + +

    You do not explicitly delete object instances; when there are no variables or other references to them, so that they can't be accessed, they are automatically deleted.

    +
    +
    + + +

    None of the above.

    +
    + +

    Methods can do at least one of the above. Take another look.

    +
    +
    +
    +
    + + +

    For an instance of a class that is assigned to the variable student, what is the proper way to refer to the title attribute/instance variable?

    +
    + + + +

    student.title()

    +
    + +

    This accesses the attribute but then tries to invoke it as a method, which will fail if title is not a method.

    +
    +
    + + +

    title.student()

    +
    + +

    student is the object, so it goes before the period; the attribute goes after.

    +
    +
    + + +

    title.student

    +
    + +

    student is the object, so it goes before the period; the attribute goes after.

    +
    +
    + + +

    student(title)

    +
    + +

    This would be the syntax for a function named student being called on a variable named title.

    +
    +
    + + +

    student.title

    +
    + +

    Yes, this is the correct syntax to use.

    +
    +
    +
    +
    + + +

    What is the name of jane's attribute (not method) that is referred to in the following code?

    +
    + + + + +import turtle + +jane = turtle.Turtle() +jane.forward(20) +print(jane.x) + + +

    The attribute is

    + + +

    Good work!

    +
    +
    + + +

    jane is an instance, not an attribute.

    +
    +
    + + +

    forward is a method.

    +
    +
    + + +

    turtle is the class, not an attribute.

    +
    +
    +
    +
    +
    + + +

    What are the names of the instances in the following code? Please put one instance per blank space and enter them in the order that the computer would read them.

    +
    + + + + +import turtle +wn = turtle.Screen() + +jazz = turtle.Turtle() +jazz.forward(50) +jazz.right(90) +pop = turtle.Turtle() +pop.left(180) +pop.forward(76) + + + + +

    Good work!

    +
    +
    + + +

    Try a different location

    +
    +
    + + +

    Try a different location

    +
    +
    +
    + + + +

    Incorrect, try again.

    +
    +
    + + +

    Good work!

    +
    +
    + + +

    Try a different location

    +
    +
    + + +

    Try a different location

    +
    +
    +
    + + + +

    Incorrect, try again.

    +
    +
    + + +

    Good work!

    +
    +
    + + +

    Try a different location

    +
    +
    + + +

    Try a different location

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Sequences/ConcatenationandRepetition.ptx b/pretext/Sequences/ConcatenationandRepetition.ptx new file mode 100644 index 00000000..81e152c6 --- /dev/null +++ b/pretext/Sequences/ConcatenationandRepetition.ptx @@ -0,0 +1,136 @@ + +
    + Concatenation and Repetition +

    Again, as with strings, the + operator concatenates lists. + Similarly, the * operator repeats the items in a list a given number of times.

    + + +fruit = ["apple","orange","banana","cherry"] +print([1,2] + [3,4]) +print(fruit+[6,7,8,9]) + +print([0] * 4) + + +

    It is important to see that these operators create new lists from the elements of the operand lists. + If you concatenate a list with 2 items and a list with 4 items, you will get a new list with 6 items + (not a list with two sublists). Similarly, repetition of a list of 2 items 4 times will give a list + with 8 items.

    +

    One way for us to make this more clear is to run a part of this example in codelens. + As you step through the code, you will see the variables being created and the lists that they refer to. + Pay particular attention to the fact that when newlist is created by the statement + newlist = fruit + numlist, it refers to a completely new list formed by making copies of the items from fruit and numlist. You can see this very clearly in the codelens object diagram. The objects are different.

    + + +fruit = ["apple","orange","banana","cherry"] +numlist = [6,7] + +newlist = fruit + numlist + +zeros = [0] * 4 + + + +

    WP: Adding types together

    +

    Beware when adding different types together! Python doesn't understand how to concatenate different + types together. Thus, if we try to add a string to a list with ['first'] + "second" then the + interpreter will return an error. To do this you'll need to make the two objects the same type. In this + case, it means putting the string into its own list and then adding the two together like so: + ['first'] + ["second"]. This process will look different for other types though. Remember that there + are functions to convert types!

    +
    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +alist = [1,3,5] +blist = [2,4,6] +print(alist + blist) + + +
    + + + +

    6

    +
    + +

    Concatenation does not add the lengths of the lists.

    +
    +
    + + +

    [1,2,3,4,5,6]

    +
    + +

    Concatenation does not reorder the items.

    +
    +
    + + +

    [1,3,5,2,4,6]

    +
    + +

    Yes, a new list with all the items of the first list followed by all those from the second.

    +
    +
    + + +

    [3,7,11]

    +
    + +

    Concatenation does not add the individual items.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +alist = [1,3,5] +print(alist * 3) + + +
    + + + +

    9

    +
    + +

    Repetition does not multiply the lengths of the lists. It repeats the items.

    +
    +
    + + +

    [1,1,1,3,3,3,5,5,5]

    +
    + +

    Repetition does not repeat each item individually.

    +
    +
    + + +

    [1,3,5,1,3,5,1,3,5]

    +
    + +

    Yes, the items of the list are repeated 3 times, one after another.

    +
    +
    + + +

    [3,9,15]

    +
    + +

    Repetition does not multiply the individual items.

    +
    +
    +
    +
    +
    diff --git a/pretext/Sequences/CountandIndex.ptx b/pretext/Sequences/CountandIndex.ptx new file mode 100644 index 00000000..65c0d37d --- /dev/null +++ b/pretext/Sequences/CountandIndex.ptx @@ -0,0 +1,216 @@ + +
    + Count and Index +

    As you create more complex programs, you will find that some tasks are commonly done. Python has some + built-in functions and methods to help you with these tasks. This page will cover two helpful methods + for both strings and lists: count and index.

    +

    You've learned about methods before when drawing with the turtle module. There, you used + .forward(50) and .color("purple") to complete actions. We refer to forward and color as methods + of the turtle class. Objects like strings and lists also have methods that we can use.

    + + Count +

    The first method we'll talk about is called count. It requires that you provide one argument, which + is what you would like to count. The method then returns the number of times that the argument occured + in the string/list the method was used on. There are some differences between count for strings and + count for lists. When you use count on a string, the argument can only be a string. You can't count how + many times the integer 2 appears in a string, though you can count how many times the string 2 appears + in a string. For lists, the argument is not restricted to just strings.

    + + +a = "I have had an apple on my desk before!" +print(a.count("e")) +print(a.count("ha")) + + +

    The activecode window above demonstrates the use of count on a string. Just like with the turtle module + when we had to specify which turtle was changing color or moving, we have to specify which string we are + using count on.

    + + +z = ['atoms', 4, 'neutron', 6, 'proton', 4, 'electron', 4, 'electron', 'atoms'] +print(z.count("4")) +print(z.count(4)) +print(z.count("a")) +print(z.count("electron")) + + +

    When you run the activecode window above, you'll see how count with a list works. Notice how 4 has a + count of zero but 4 has a count of three? This is because the list z only contains the integer 4. + There are never any strings that are 4. Additionally, when we check the count of a, we see that the + program returns zero. Though some of the words in the list contain the letter a, the program is + looking for items in the list that are just the letter a.

    +
    + + Index +

    The other method that can be helpful for both strings and lists is the index method. The index + method requires one argument, and, like the count method, it takes only strings when index is used + on strings, and any type when it is used on lists. For both strings and lists, index returns the + leftmost index where the argument is found. If it is unable to find the argument in the string or list, + then an error will occur.

    + + +music = "Pull out your music and dancing can begin" +bio = ["Metatarsal", "Metatarsal", "Fibula", [], "Tibia", "Tibia", 43, "Femur", "Occipital", "Metatarsal"] + +print(music.index("m")) +print(music.index("your")) + +print(bio.index("Metatarsal")) +print(bio.index([])) +print(bio.index(43)) + + +

    All of the above examples work, but were you surprised by any of the return values? Remember that + index will return the left most index of the argument. Even though Metatarsal occurs many times + in bio, the method will only return the location of one of them.

    +

    Here's another example.

    + + +seasons = ["winter", "spring", "summer", "fall"] + +print(seasons.index("autumn")) #Error! + + +

    In the activecode window above, we're trying to see where autumn is in the list seasons. However, + there is no string called autumn (though there is string called fall which is likely what the program + is looking for). Remember that an error occurs if the argument is not in the string or list.

    +

    + Check your understanding +

    + + +

    What will be stored in the variable ty below?

    + + +qu = "wow, welcome week!" +ty = qu.index("we") + + +
    + + + +

    5

    +
    + +

    Yes, when we get the index of a string that is longer than one character, we get the index for the first character in the string.

    +
    +
    + + +

    6

    +
    + +

    When we get the index of a string that is longer than one character, we get the index for the first character in the string.

    +
    +
    + + +

    13

    +
    + +

    Remember that index returns the left most occurance of the argument.

    +
    +
    + + +

    14

    +
    + +

    Remember that index returns the left most occurance of the argument.

    +
    +
    + + +

    There is an error.

    +
    + +

    There is at least one 'we' in the string assigned to qu.

    +
    +
    +
    +
    + + +

    What will be stored in the variable ty below?

    + + +qu = "wow, welcome week! Were you wanting to go?" +ty = qu.count("we") + + +
    + + + +

    0

    +
    + +

    No, there is at least one e in the string.

    +
    +
    + + +

    2

    +
    + +

    Yes, there is a difference between "we" and "We" which means there are only two in the string.

    +
    +
    + + +

    3

    +
    + +

    there is a difference between "we" and "We".

    +
    +
    + + +

    There is an error.

    +
    + +

    There is no error in the code.

    +
    +
    +
    +
    + + +

    What will be stored in the variable ht below?

    + + +rooms = ['bathroom', 'kitchen', 'living room', 'bedroom', 'closet', "foyer"] +ht = rooms.index("garden") + + +
    + + + +

    0

    +
    + +

    No, the first element is 'bathroom', not 'garden'.

    +
    +
    + + +

    -1

    +
    + +

    Though there is no 'garden' in the list, we do not get back -1 when we use index. Instead, we get an error.

    +
    +
    + + +

    There is an error.

    +
    + +

    Yes, there is no 'garden' in the list, so we get back an error.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Sequences/DisabmiguatingSquareBrackets.ptx b/pretext/Sequences/DisabmiguatingSquareBrackets.ptx new file mode 100644 index 00000000..e206a828 --- /dev/null +++ b/pretext/Sequences/DisabmiguatingSquareBrackets.ptx @@ -0,0 +1,79 @@ + +
    + Disambiguating []: creation vs indexing +

    Square brackets [] are used in quite a few ways in python. When you're first learning how to use them it may be + confusing, but with practice and repetition they'll be easy to incorporate!

    +

    You have currently encountered two instances where we have used square brackets. The first is creating lists and the second + is indexing. At first glance, creating and indexing are difficult to distinguish. However, indexing requires referencing + an already created list while simply creating a list does not.

    + + +new_lst = [] + + +

    In the code above, a new list is created using the empty brackets. Since there's nothing in it though, we can't index into it.

    + + +new_lst = ["NFLX", "AMZN", "GOOGL", "DIS", "XOM"] +part_of_new_lst = new_lst[0] + + +

    In the code above, you'll see how, now that we have elements inside of new_lst, we can index into it. + In order to extract an element of the list, we do use [], but we first have to specify which list we are indexing. + Imagine if there was another list in the activecode. + How would python know which list we want to index into if we don't tell it? + Additionally, we have to specify what element we want to extract. This belongs inside of the brackets.

    +

    Though it may be easier to distinguish in this above activecode, below may be a bit more difficult.

    + + +lst = [0] +n_lst = lst[0] + +print(lst) +print(n_lst) + + +

    Here, we see a list called lst being assigned to a list with one element, zero. Then, we see how n_lst is assigned + the value associated with the first element of lst. Dispite the variable names, only one of the above variables is + assigned to a list. Note that in this example, what sets creating apart from indexing is the reference to the list to let + python know that you are extracting an element from another list.

    + + +

    Which of the following correctly uses indexing? Assume that a is a list or string. Select as many as apply.

    +
    + + + +

    w = [a]

    +
    + +

    No, due to the way the code was written it creates a list. This list would have one element which is the value assigned to the variable a.

    +
    +
    + + +

    y = a[]

    +
    + +

    Though this tries to use indexing, it does not specify what element should be taken from a.

    +
    +
    + + +

    x = [8]

    +
    + +

    No, this is an example of creating a list.

    +
    +
    + + +

    t = a[0]

    +
    + +

    Yes, this will using indexing to get the value of the first element of a.

    +
    +
    +
    +
    +
    diff --git a/pretext/Sequences/Exercises.ptx b/pretext/Sequences/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Sequences/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Sequences/IndexOperatorWorkingwiththeCharactersofaString.ptx b/pretext/Sequences/IndexOperatorWorkingwiththeCharactersofaString.ptx new file mode 100644 index 00000000..c3c8a37c --- /dev/null +++ b/pretext/Sequences/IndexOperatorWorkingwiththeCharactersofaString.ptx @@ -0,0 +1,279 @@ + +

    + Index Operator: Working with the Characters of a String +

    The indexing operator (Python uses square brackets to enclose the index) + selects a single character from a string. The characters are accessed by their position or + index value. For example, in the string shown below, the 14 characters are indexed left to right + from postion 0 to position 13.

    + index values +

    It is also the case that the positions are named from right to left using negative numbers where -1 is + the rightmost index and so on. Note that the character at index 6 (or -8) is the blank character.

    + + +school = "Luther College" +m = school[2] +print(m) + +lastchar = school[-1] +print(lastchar) + + +

    The expression school[2] selects the character at index 2 from school, and creates a new + string containing just this one character. The variable m refers to the result.

    +

    The letter at index zero of "Luther College" is L. So at + position [2] we have the letter t.

    +

    If you want the zero-eth letter of a string, you just put 0, or any expression + with the value 0, in the brackets. Give it a try.

    +

    The expression in brackets is called an index. An index specifies a member + of an ordered collection. In this case the collection of characters in the string. The index + indicates which character you want. It can be any integer + expression so long as it evaluates to a valid index value.

    +

    Note that indexing returns a string — Python has no special type for a single character. + It is just a string of length 1.

    + + Index Operator: Accessing Elements of a List or Tuple +

    The syntax for accessing the elements of a list or tuple is the same as the syntax for + accessing the characters of a string. We use the index operator ( [] – not to + be confused with an empty list). The expression inside the brackets specifies + the index. Remember that the indices start at 0. Any integer expression can be used + as an index and as with strings, negative index values will locate items from the right instead + of from the left.

    +

    When we say the first, third or nth character of a sequence, we generally mean counting the usual way, starting with 1. The nth character and the character AT INDEX n are different then: The nth character is at index n-1. Make sure you are clear on what you mean!

    +

    Try to predict what will be printed out by the following code, and then run it to check your + prediction. (Actually, it's a good idea to always do that with the code examples. You + will learn much more if you force yourself to make a prediction before you see the output.)

    + + +numbers = [17, 123, 87, 34, 66, 8398, 44] +print(numbers[2]) +print(numbers[9-8]) +print(numbers[-2]) + + + + +prices = (1.99, 2.00, 5.50, 20.95, 100.98) +print(prices[0]) +print(prices[-1]) +print(prices[3-5]) + + +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +s = "python rocks" +print(s[3]) + + +
    + + + +

    t

    +
    + +

    Index locations do not start with 1, they start with 0.

    +
    +
    + + +

    h

    +
    + +

    Yes, index locations start with 0.

    +
    +
    + + +

    c

    +
    + +

    s[-3] would return c, counting from right to left.

    +
    +
    + + +

    Error, you cannot use the [ ] operator with a string.

    +
    + +

    [ ] is the index operator.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +s = "python rocks" +print(s[2] + s[-4]) + + +
    + + + +

    tr

    +
    + +

    Almost, t is at postion 2, counting left to right starting from 0; but r is at -5, counting right to left starting from -1.

    +
    +
    + + +

    to

    +
    + +

    For -4 you count from right to left, starting with -1.

    +
    +
    + + +

    ps

    +
    + +

    p is at location 0, not 2.

    +
    +
    + + +

    nn

    +
    + +

    n is at location 5, not 2.

    +
    +
    + + +

    Error, you cannot use the [ ] operator with the + operator.

    +
    + +

    [ ] operator returns a string that can be concatenated with another string.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +alist = [3, 67, "cat", [56, 57, "dog"], [ ], 3.14, False] +print(alist[5]) + + +
    + + + +

    [ ]

    +
    + +

    The empty list is at index 4.

    +
    +
    + + +

    3.14

    +
    + +

    Yes, 3.14 is at index 5 since we start counting at 0 and sublists count as one item.

    +
    +
    + + +

    False

    +
    + +

    False is at index 6.

    +
    +
    + + +

    "dog"

    +
    + +

    Look again, the element at index 3 is a list. This list only counts as one element.

    +
    +
    +
    +
    + + +

    Assign the value of the 34th element of lst to the variable output. Note that the l in lst is a letter, not a number; variable names can't start with a number.

    +
    + + +lst = ["hi", "morning", "dog", "506", "caterpillar", "balloons", 106, "yo-yo", "python", "moon", "water", "sleepy", "daffy", 45, "donald", "whiteboard", "glasses", "markers", "couches", "butterfly", "100", "magazine", "door", "picture", "window", ["Olympics", "handle"], "chair", "pages", "readings", "burger", "juggle", "craft", ["store", "poster", "board"], "laptop", "computer", "plates", "hotdog", "salad", "backpack", "zipper", "ring", "watch", "finger", "bags", "boxes", "pods", "peas", "apples", "horse", "guinea pig", "bowl", "EECS"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(output, "laptop", "Testing that output value is assigned to correct value.") + +myTests().main() + + +
    + + +

    Assign the value of the 23rd element of l to the variable checking.

    +
    + + +l = ("hi", "goodbye", "python", "106", "506", 91, ['all', 'Paul', 'Jackie', "UMSI", 1, "Stephen", 4.5], 109, "chair", "pizza", "wolverine", 2017, 3.92, 1817, "account", "readings", "papers", 12, "facebook", "twitter", 193.2, "snapchat", "leaders and the best", "social", "1986", 9, 29, "holiday", ["women", "olympics", "gold", "rio", 21, "2016", "men"], "26trombones") + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(checking, "leaders and the best", "Testing that checking has the correct element assigned.") + +myTests().main() + + +
    + + +

    Assign the value of the last chacter of lst to the variable output. Do this so that the length of lst doesn't matter.

    +
    + + +lst = "Every chess or checkers game begins from the same position and has a finite number of moves that can be played. While the number of possible scenarios and moves is quite large, it is still possible for computers to calculate that number and even be programmed to respond well against a human player..." + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(output, ".", "Testing that output value is assigned to correct value.") + +myTests().main() + + +
    + +

    Why does counting start at 0 going from left to right, but at -1 going from right to left? Well, indexing starting at 0 + has a long history in computer science having to do with some low-level implementation details that we won't + go into. For indexing from right to left, it might seem natural to do the analgous thing + and start at -0. Unfortunately, -0 is the same as 0, so s[-0] can't be the last item. Remember we + said that programming languages are formal languages where details matter and + everything is taken literally?

    +
    +
    +
    diff --git a/pretext/Sequences/Length.ptx b/pretext/Sequences/Length.ptx new file mode 100644 index 00000000..76faf8fd --- /dev/null +++ b/pretext/Sequences/Length.ptx @@ -0,0 +1,145 @@ + +
    + Length +

    The len function, when applied to a string, returns the number of characters in a string.

    + + +fruit = "Banana" +print(len(fruit)) + + +

    To get the last letter of a string, you might be tempted to try something like + this:

    + + +fruit = "Banana" +sz = len(fruit) +last = fruit[sz] # ERROR! +print(last) + + +

    That won't work. It causes the runtime error IndexError: string index out of range. The reason is + that there is no letter at index position 6 in "Banana". Since we started counting at zero, the + six indexes are numbered 0 to 5. To get the last character, we have to subtract 1 from the length. + Give it a try in the example above.

    + + +fruit = "Banana" +sz = len(fruit) +lastch = fruit[sz-1] +print(lastch) + + + + + +

    Typically, a Python programmer would combine lines 2 and 3 from the above example into a single line:

    + + +lastch = fruit[len(fruit)-1] + + +

    Though, from what you just learned about using negative indices, using fruit[-1] would be + a more appropriate way to access the last index in a list.

    +

    You can still use the len function to access other predictable indices, like the middle character of a string.

    + + +fruit = "grape" +midchar = fruit[len(fruit)//2] +# the value of midchar is "a" + + +

    As with strings, the function len returns the length of a list (the number of items in the list). + However, since lists can have items which are themselves sequences (e.g., strings), + it important to note that len only returns the top-most length.

    + + +alist = ["hello", 2.0, 5] +print(len(alist)) +print(len(alist[0])) + + +

    Note that alist[0] is the string "hello", which has length 5.

    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +s = "python rocks" +print(len(s)) + + +
    + + + +

    11

    +
    + +

    The blank space counts as a character.

    +
    +
    + + +

    12

    +
    + +

    Yes, there are 12 characters in the string.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +alist = [3, 67, "cat", 3.14, False] +print(len(alist)) + + +
    + + + +

    4

    +
    + +

    len returns the actual number of items in the list, not the maximum index value.

    +
    +
    + + +

    5

    +
    + +

    Yes, there are 5 items in this list.

    +
    +
    +
    +
    + + +

    Assign the number of elements in lst to the variable output.

    +
    + + +lst = ["hi", "morning", "dog", "506", "caterpillar", "balloons", 106, "yo-yo", "python", "moon", "water", "sleepy", "daffy", 45, "donald", "whiteboard", "glasses", "markers", "couches", "butterfly", "100", "magazine", "door", "picture", "window", ["Olympics", "handle"], "chair", "pages", "readings", "burger", "juggle", "craft", ["store", "poster", "board"], "laptop", "computer", "plates", "hotdog", "salad", "backpack", "zipper", "ring", "watch", "finger", "bags", "boxes", "pods", "peas", "apples", "horse", "guinea pig", "bowl", "EECS"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(output, 52, "Testing that output value is assigned to correct value.") + +myTests().main() + + +
    +
    diff --git a/pretext/Sequences/SplitandJoin.ptx b/pretext/Sequences/SplitandJoin.ptx new file mode 100644 index 00000000..9065330e --- /dev/null +++ b/pretext/Sequences/SplitandJoin.ptx @@ -0,0 +1,88 @@ + +
    + Splitting and Joining Strings +

    Two of the most useful methods on strings involve lists of strings. The split method breaks a string into a list + of words. By default, any number of whitespace characters is considered a word boundary.

    + shows the phrase "leaders and best" being split on spaces + + +song = "The rain in Spain..." +wds = song.split() +print(wds) + + +

    An optional argument called a delimiter can be used to specify which characters to use as word boundaries.

    + shows example of splitting "leaders and best" on "e" +

    The following example uses the string ai as the delimiter:

    + + +song = "The rain in Spain..." +wds = song.split('ai') +print(wds) + + +

    Notice that the delimiter doesn't appear in the result.

    +

    The inverse of the split method is join. You choose a + desired separator string, (often called the glue) + and join the list with the glue between each of the elements.

    + shows process of a "/" separating the words "leaders", "and", "best" + + +wds = ["red", "blue", "green"] +glue = ';' +s = glue.join(wds) +print(s) +print(wds) + +print("***".join(wds)) +print("".join(wds)) + + +

    The list that you glue together (wds in this example) is not modified. Also, + you can use empty glue or multi-character strings as glue.

    +

    + Check your understanding +

    + + +

    Create a new list of the 6th through 13th elements of lst (eight items in all) and assign it to the variable output.

    +
    + + +lst = ["swimming", 2, "water bottle", 44, "lollipop", "shine", "marsh", "winter", "donkey", "rain", ["Rio", "Beijing", "London"], [1,2,3], "gold", "bronze", "silver", "mathematician", "scientist", "actor", "actress", "win", "cell phone", "leg", "running", "horse", "socket", "plug", ["Phelps", "le Clos", "Lochte"], "drink", 22, "happyfeet", "penguins"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFour(self): + self.assertEqual(output, lst[5:13], "Testing that output value is assigned to correct value.") + +myTests().main() + + +
    + + +

    Create a variable output and assign to it a list whose elements are the words in the string str1.

    +
    + + +str1 = "OH THE PLACES YOU'LL GO" + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testSix(self): + self.assertEqual(output, ["OH", "THE", "PLACES", "YOU'LL", "GO"], "Testing that output value is assigned to correct value.") + +myTests().main() + + +
    +
    diff --git a/pretext/Sequences/StringsandLists.ptx b/pretext/Sequences/StringsandLists.ptx new file mode 100644 index 00000000..e11d86ee --- /dev/null +++ b/pretext/Sequences/StringsandLists.ptx @@ -0,0 +1,100 @@ + +
    + Strings, Lists, and Tuples +

    Throughout the first chapters of this book we have used strings to represent words or phrases that we + wanted to print out. Our definition was simple: a string is simply some characters inside quotes. + In this chapter we explore strings in much more detail.

    +

    Additionally, we explore lists and tuples, which are very much like strings but can hold different types.

    + + Strings + + + Lists + + + Tuples +

    A tuple, like a list, is a sequence of items of any type. The printed representation of a tuple is a comma-separated + sequence of values, enclosed in parentheses. In other words, the representation is just like lists, except with + parentheses () instead of square brackets [].

    +

    One way to create a tuple is to write an expression, enclosed in parentheses, + that consists of multiple other expressions, separated by commas.

    + + +julia = ("Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia") + + +

    The key difference between lists and tuples is that a tuple is immutable, meaning that its contents can't be changed after the tuple is + created. We will examine the mutability of lists in detail in the chapter on .

    +

    To create a tuple with a single element (but you're probably not likely to do that too often), we have to include the + final comma, because without the final comma, Python treats the (5) below as an integer in parentheses:

    + + +t = (5,) +print(type(t)) + +x = (5) +print(type(x)) + + +

    + Check your understanding +

    + + +

    A list is only allowed to contain integer items.

    +
    + + + +

    False

    +
    + +

    Yes, unlike strings, lists can consist of any type of Python data.

    +
    +
    + + +

    True

    +
    + +

    Lists are heterogeneous, meaning they can have different types of data.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/Sequences/TheSliceOperator.ptx b/pretext/Sequences/TheSliceOperator.ptx new file mode 100644 index 00000000..da66618c --- /dev/null +++ b/pretext/Sequences/TheSliceOperator.ptx @@ -0,0 +1,215 @@ + +
    + The Slice Operator +

    A substring of a string is called a slice. Selecting a slice is similar to + selecting a character:

    + + +singers = "Peter, Paul, and Mary" +print(singers[0:5]) +print(singers[7:11]) +print(singers[17:21]) + + +

    The slice operator [n:m] returns the part of the string starting + with the character at index n and + go up to but not including the character at index m. + Or with normal counting from 1, this is the (n+1)st character up to and including the mth character.

    +

    If you omit the first index (before the colon), the slice starts at the + beginning of the string. If you omit the second index, the slice goes to the + end of the string.

    + + +fruit = "banana" +print(fruit[:3]) +print(fruit[3:]) + + +

    What do you think fruit[:] means?

    + + List Slices +

    The slice operation we saw with strings also work on lists. Remember that the first index is the starting point for the slice and the second number is one index past the end of the slice (up to but not including that element). Recall also + that if you omit the first index (before the colon), the slice starts at the + beginning of the sequence. If you omit the second index, the slice goes to the + end of the sequence.

    + + +a_list = ['a', 'b', 'c', 'd', 'e', 'f'] +print(a_list[1:3]) +print(a_list[:4]) +print(a_list[3:]) +print(a_list[:]) + + +
    + + Tuple Slices +

    We can't modify the elements of a tuple, but we can make a variable reference a new tuple holding different information. + Thankfully we can also use the slice operation on tuples as well as strings and lists. To construct the new tuple, we can + slice parts of the old tuple and join up the bits to make the new tuple. So julia has a new recent film, and we might + want to change her tuple. We can easily slice off the parts we want and concatenate them with the new tuple.

    + + +julia = ("Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia") +print(julia[2]) +print(julia[2:6]) + +print(len(julia)) + +julia = julia[:3] + ("Eat Pray Love", 2010) + julia[5:] +print(julia) + + +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +s = "python rocks" +print(s[3:8]) + + +
    + + + +

    python

    +
    + +

    That would be s[0:6].

    +
    +
    + + +

    rocks

    +
    + +

    That would be s[7:].

    +
    +
    + + +

    hon r

    +
    + +

    Yes, start with the character at index 3 and go up to but not include the character at index 8.

    +
    +
    + + +

    Error, you cannot have two numbers inside the [ ].

    +
    + +

    This is called slicing, not indexing. It requires a start and an end.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +alist = [3, 67, "cat", [56, 57, "dog"], [ ], 3.14, False] +print(alist[4:]) + + +
    + + + +

    [ [ ], 3.14, False]

    +
    + +

    Yes, the slice starts at index 4 and goes up to and including the last item.

    +
    +
    + + +

    [ [ ], 3.14]

    +
    + +

    By leaving out the upper bound on the slice, we go up to and including the last item.

    +
    +
    + + +

    [ [56, 57, "dog"], [ ], 3.14, False]

    +
    + +

    Index values start at 0.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +L = [0.34, '6', 'SI106', 'Python', -2] +print(len(L[1:-1])) + + +
    + + + +

    2

    +
    + +

    The list begins with the second item of L and includes everything up to but not including the last item.

    +
    +
    + + +

    3

    +
    + +

    Yes, there are 3 items in this list.

    +
    +
    + + +

    4

    +
    + +

    The list begins with the second item of L and includes everything up to but not including the last item.

    +
    +
    + + +

    5

    +
    + +

    The list begins with the second item of L and includes everything up to but not including the last item.

    +
    +
    +
    +
    + + +

    Create a new list using the 9th through 12th elements (four items in all) of new_lst and assign it to the variable sub_lst.

    +
    + + +new_lst = ["computer", "luxurious", "basket", "crime", 0, 2.49, "institution", "slice", "sun", ["water", "air", "fire", "earth"], "games", 2.7, "code", "java", ["birthday", "celebration", 1817, "party", "cake", 5], "rain", "thunderstorm", "top down"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sub_lst, new_lst[8:12], "Testing that sub_lst has the correct elements assigned.") + +myTests().main() + + +
    +
    +
    diff --git a/pretext/Sequences/intro-Sequences.ptx b/pretext/Sequences/intro-Sequences.ptx new file mode 100644 index 00000000..a78e3ee8 --- /dev/null +++ b/pretext/Sequences/intro-Sequences.ptx @@ -0,0 +1,48 @@ + +
    + Introduction: Sequences +

    In the real world most of the data we care about doesn't exist on its own. Usually data is in the form of some kind of collection or sequence. For example, a grocery list helps us keep track of the individual food items we need to buy, and our todo list organizes the things we need to do each day. Notice that both the grocery list and the todo list are not even concerned with numbers as much as they are concerned with words. This is true of much of our daily life, and so Python provides us with many features to work with lists of all kinds of objects (numbers, words, etc.) as well as special kind of sequence, the character string, which you can think of as a sequence of individual letters.

    +

    So far we have seen built-in types like: int, float, and str. + int and float are considered to be simple or primitive or atomic data types because their + values are not composed of any smaller parts. They cannot be broken down.

    +

    On the other hand, strings and lists are different from the others because they + are made up of smaller pieces. In the case of strings, they are made up of smaller + strings each containing one character.

    +

    Types that are comprised of smaller pieces are called collection data types. + Depending on what we are doing, we may want to treat a collection data type as a + single entity (the whole), or we may want to access its parts. This ambiguity is useful.

    +

    In this chapter we will examine operations that can be performed on sequences, such as picking + out individual elements or subsequences (called slices) or computing their length. In addition, we'll + examine some special functions that are defined only for strings, and we'll find out one importance + difference between strings and lists, that lists can be changed (or mutated) while strings are + immutable.

    + + Learning Goals +

    +

      +
    • +

      To understand different operations that can be performed on strings, lists, and tuples

      +
    • +
    • +

      To distinguish between different uses of [] in Python

      +
    • +
    +

    +
    + + Objectives +

    +

      +
    • +

      Predict the output of split and join operations

      +
    • +
    • +

      Read and write expressions that use slices

      +
    • +
    • +

      Read and write expressions that use concatenation and repetition

      +
    • +
    +

    +
    +
    diff --git a/pretext/Sequences/toctree.ptx b/pretext/Sequences/toctree.ptx new file mode 100644 index 00000000..22c7c9f1 --- /dev/null +++ b/pretext/Sequences/toctree.ptx @@ -0,0 +1,15 @@ + + + Sequences + + + + + + + + + + + + diff --git a/pretext/Sequences/week2a1.ptx b/pretext/Sequences/week2a1.ptx new file mode 100644 index 00000000..474a21b8 --- /dev/null +++ b/pretext/Sequences/week2a1.ptx @@ -0,0 +1,467 @@ + +
    + Chapter Assessment +

    + Check your understanding +

    + + +

    What will the output be for the following code?

    + + +let = "z" +let_two = "p" +c = let_two + let +m = c*5 +print(m) + + +
    + + + +

    zpzpzpzpzp

    +
    + +

    The order of concatenation matters.

    +
    +
    + + +

    zzzzzppppp

    +
    + +

    Think about the order that the program is executed in, what occurs first?

    +
    +
    + + +

    pzpzpzpzpz

    +
    + +

    Yes, because let_two was put before let, c has "pz" and then that is repeated five times.

    +
    +
    + + +

    pppppzzzzz

    +
    + +

    Think about the order that the program is executed in, what occurs first?

    +
    +
    + + +

    None of the above, an error will occur.

    +
    + +

    This is correct syntax and no errors will occur.

    +
    +
    +
    +
    + + +

    Write a program that extracts the last three items in the list sports and assigns it to the variable last. Make sure to write your code so that it works no matter how many items are in the list.

    +
    + + +sports = ['cricket', 'football', 'volleyball', 'baseball', 'softball', 'track and field', 'curling', 'ping pong', 'hockey'] + + +===== + +from unittest.gui import TestCaseGui +import re + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(last, ['curling', 'ping pong', 'hockey'], "Testing that the value of last is the last three items in sports.") + self.assertTrue(re.search(r'last\s*=\s*\S*3:', self.getEditorText()), "Hardcode check") + + +myTests().main() + + +
    + + +

    Write code that combines the following variables so that the sentence You are doing a great job, keep it up! is assigned to the variable message. Do not edit the values assigned to by, az, io, or qy.

    +
    + + +by = "You are" +az = "doing a great " +io = "job" +qy = "keep it up!" + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(by, 'You are', "Testing original variables.") + self.assertEqual(az, 'doing a great ', "Testing original variables.") + self.assertEqual(io, 'job', "Testing original variables.") + self.assertEqual(qy, 'keep it up!', "Testing original variables.") + self.assertEqual(message, 'You are doing a great job, keep it up!', "Testing that the value of message is what was expected.") + self.assertNotIn("You are doing a great job, keep it up!", self.getEditorText(), "Testing for hardcoding (Don't worry about actual and expected values).") + + +myTests().main() + + +
    + + +

    What will the output be for the following code?

    + + +ls = ['run', 'world', 'travel', 'lights', 'moon', 'baseball', 'sea'] +new = ls[2:4] +print(new) + + +
    + + + +

    ['travel', 'lights', 'moon']

    +
    + +

    When we take a slice of something, it includes the item at the first index and excludes the item at the second index.

    +
    +
    + + +

    ['world', 'travel', 'lights']

    +
    + +

    When we take a slice of something, it includes the item at the first index and excludes the item at the second index. Additionally, Python is a zero-index based language.

    +
    +
    + + +

    ['travel', 'lights']

    +
    + +

    Yes, python is a zero-index based language and slices are inclusive of the first index and exclusive of the second.

    +
    +
    + + +

    ['world', 'travel']

    +
    + +

    Python is a zero-index based language.

    +
    +
    +
    +
    + + +

    What is the type of m?

    + + +l = ['w', '7', 0, 9] +m = l[1:2] + + +
    + + + +

    string

    +
    + +

    Not quite, is it slicing or accessing an element?

    +
    +
    + + +

    integer

    +
    + +

    What is happening in the assignment statement for m?

    +
    +
    + + +

    float

    +
    + +

    What is happening in the assignment statement for m?

    +
    +
    + + +

    list

    +
    + +

    Yes, a slice returns a list no matter how large the slice.

    +
    +
    +
    +
    + + +

    What is the type of m?

    + + +l = ['w', '7', 0, 9] +m = l[1] + + +
    + + + +

    string

    +
    + +

    Yes, the quotes around the number mean that this is a string.

    +
    +
    + + +

    integer

    +
    + +

    Not quite, look again at what is being extracted.

    +
    +
    + + +

    float

    +
    + +

    Not quite, look again at what is being extracted.

    +
    +
    + + +

    list

    +
    + +

    Not quite, is it slicing or accessing an element?

    +
    +
    +
    +
    + + +

    What is the type of x?

    + + +b = "My, what a lovely day" +x = b.split(',') + + +
    + + + +

    string

    +
    + +

    Not quite; .split() returns a list, each of whose elements is a string.

    +
    +
    + + +

    integer

    +
    + +

    Not quite, look again at what types are present and what the result of .split() is.

    +
    +
    + + +

    float

    +
    + +

    Not quite, look again at what types are present and what the result of .split() is.

    +
    +
    + + +

    list

    +
    + +

    Yes, the .split() method returns a list.

    +
    +
    +
    +
    + + +

    What is the type of a?

    + + +b = "My, what a lovely day" +x = b.split(',') +z = "".join(x) +y = z.split() +a = "".join(y) + + +
    + + + +

    string

    +
    + +

    Yes, the string is split into a list, then joined back into a string, then split again, and finally joined back into a string.

    +
    +
    + + +

    integer

    +
    + +

    Not quite, look again at what types are present and what the result of .split() is.

    +
    +
    + + +

    float

    +
    + +

    Not quite, look again at what types are present and what the result of .split() is.

    +
    +
    + + +

    list

    +
    + +

    Not quite, think about what .split() and .join() return.

    +
    +
    +
    +
    + + +

    Write code to determine how many 9's are in the list nums and assign that value to the variable how_many. Do not use a for loop to do this.

    +
    + + +nums = [4, 2, 23.4, 9, 545, 9, 1, 234.001, 5, 49, 8, 9 , 34, 52, 1, -2, 9.1, 4] + + +===== + +from unittest.gui import TestCaseGui +import re + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(how_many, 3, "Testing that how_many is set correctly.") + self.assertNotIn('for', self.getEditorText(), "Testing that you didn't use a for loop.") + self.assertFalse(re.search(r'how_many\s*=\s*3', self.getEditorText()), "Hardcode check") + +myTests().main() + + +
    + + +

    Write code that uses slicing to get rid of the the second 8 so that here are only two 8's in the list bound to the variable nums.

    +
    + + +nums = [4, 2, 8, 23.4, 8, 9, 545, 9, 1, 234.001, 5, 49, 8, 9 , 34, 52, 1, -2, 9.1, 4] + + +===== + +from unittest.gui import TestCaseGui +import re + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(nums, [4, 2, 8, 23.4, 9, 545, 9, 1, 234.001, 5, 49, 8, 9 , 34, 52, 1, -2, 9.1, 4], "Testing that nums is set correctly.") + self.assertTrue(re.search(r'\s*:', self.getEditorText()), "Testing that you are using slices to remove the second 8 (Don't worry about actual and expected values)") + +myTests().main() + + +
    + + +

    Assign the last element of lst to the variable end_elem. Do this so that it works no matter how long lst is.

    +
    + + +lst = ["hi", "goodbye", "python", "106", "506", 91, ['all', 'Paul', 'Jackie', "UMSI", 1, "Stephen", 4.5], 109, "chair", "pizza", "wolverine", 2017, 3.92, 1817, "account", "readings", "papers", 12, "facebook", "twitter", 193.2, "snapchat", "leaders and the best", "social", "1986", 9, 29, "holiday", ["women", "olympics", "gold", "rio", 21, "2016", "men"], "26trombones"] + +===== + +from unittest.gui import TestCaseGui +import re + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(end_elem, lst[-1], "Testing that end_elem has the correct element assigned.") + self.assertFalse(re.search(r'end_elem\s*=\s*\S26trombones\S', self.getEditorText()), "Hardcoding Check (Don't worry about actual and expected values)") + +myTests().main() + + +
    + + +

    Assign the number of elements in lst to the variable num_lst.

    +
    + + +lst = ["hi", "goodbye", "python", "106", "506", 91, ['all', 'Paul', 'Jackie', "UMSI", 1, "Stephen", 4.5], 109, "chair", "pizza", "wolverine", 2017, 3.92, 1817, "account", "readings", "papers", 12, "facebook", "twitter", 193.2, "snapchat", "leaders and the best", "social", "1986", 9, 29, "holiday", ["women", "olympics", "gold", "rio", 21, "2016", "men"], "26trombones"] + +===== + +from unittest.gui import TestCaseGui +import re + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num_lst, 30, "Testing that num_lst has the correct length assigned.") + self.assertFalse(re.search(r'num_lst\s*=\s*30', self.getEditorText()), "Hardcoding Check (Don't worry about actual and expected values)") + +myTests().main() + + +
    + + +

    Create a variable called wrds and assign to it a list whose elements are the words in the string sent. Do not worry about punctuation.

    +
    + + +sent = "The bicentennial for our university was in 2017" + +===== + +from unittest.gui import TestCaseGui +import re + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(wrds, sent.split(), "Testing that wrds has been correctly assigned.") + self.assertFalse(re.search(r'wrds\s*=\s*\S*The\S', self.getEditorText()), "Hardcoding Check (Don't worry about actual and expected values)") + + +myTests().main() + + +
    +
    diff --git a/pretext/SimplePythonData/ConvertTypeFunctions.ptx b/pretext/SimplePythonData/ConvertTypeFunctions.ptx new file mode 100644 index 00000000..535592e5 --- /dev/null +++ b/pretext/SimplePythonData/ConvertTypeFunctions.ptx @@ -0,0 +1,93 @@ + +
    + Type conversion functions +

    Sometimes it is necessary to convert values from one type to another. Python provides + a few simple functions that will allow us to do that. The functions int, float and str + will (attempt to) convert their arguments into types int, float and str + respectively. We call these type conversion functions.

    +

    The int function can take a floating point number or a string, and turn it + into an int. For floating point numbers, it discards the decimal portion of + the number - a process we call truncation towards zero on the number line. + Let us see this in action:

    + + +print(3.14, int(3.14)) +print(3.9999, int(3.9999)) # This doesn't round to the closest int! +print(3.0, int(3.0)) +print(-3.999, int(-3.999)) # Note that the result is closer to zero + +print("2345", int("2345")) # parse a string to produce an int +print(17, int(17)) # int even works on integers +print(int("23bottles")) + + +

    The last case shows that a string has to be a syntactically legal number, + otherwise you'll get one of those pesky runtime errors. Modify the example by deleting the + bottles and rerun the program. You should see the integer 23.

    +

    The type converter float can turn an integer, a float, or a syntactically + legal string into a float.

    + + +print(float("123.45")) +print(type(float("123.45"))) + + +

    The type converter str turns its argument into a string. Remember that when we print a string, the + quotes are removed in the output window. However, if we print the type, we can see that it is definitely str.

    + + +print(str(17)) +print(str(123.45)) +print(type(str(123.45))) + + +

    One common operation where you might need to do a type conversion is when you are concatenating several strings together but want to include a numeric value as part of the final string. Because we can't concatenate a string with an integer or floating point number, we will often have to convert numbers to strings before concatenating them.

    + a variable stores the value 55. a print statement tries to print "the value is" concatenated with the integer, but a runtime error occurs. Solution is to convert the integer into a string so that it can be concatenated. +

    + Check your understanding +

    + + +

    What value is printed when the following statement executes?

    + + +print(int(53.785)) + + +
    + + + +

    Nothing is printed. It generates a runtime error.

    +
    + +

    The statement is valid Python code. It calls the int function on 53.785 and then prints the value that is returned.

    +
    +
    + + +

    53

    +
    + +

    The int function truncates all values after the decimal and prints the integer value.

    +
    +
    + + +

    54

    +
    + +

    When converting to an integer, the int function does not round.

    +
    +
    + + +

    53.785

    +
    + +

    The int function removes the fractional part of 53.785 and returns an integer, which is then printed.

    +
    +
    +
    +
    +
    diff --git a/pretext/SimplePythonData/DataTypes.ptx b/pretext/SimplePythonData/DataTypes.ptx new file mode 100644 index 00000000..1eaf108d --- /dev/null +++ b/pretext/SimplePythonData/DataTypes.ptx @@ -0,0 +1,170 @@ + +
    + Data Types +

    If you are not sure what class (data type) a value falls into, Python has a function called + type which can tell you.

    + + +print(type("Hello, World!")) +print(type(17)) +print("Hello, World") +print(type(3.2)) + + +

    What about values like "17" and "3.2"? They look like numbers, but they + are in quotation marks like strings.

    + + +print(type("17")) +print(type("3.2")) + + +

    They're strings!

    +

    Strings in Python can be enclosed in either single quotes (') or double + quotes ("), or three of each (''' or """)

    + + +print(type('This is a string.')) +print(type("And so is this.")) +print(type("""and this.""")) +print(type('''and even this...''')) + + +

    Double quoted strings can contain single quotes inside them, as in "Bruce's +beard", and single quoted strings can have double quotes inside them, as in + 'The knights who say "Ni!"'. + Strings enclosed with three occurrences of either quote symbol are called + triple quoted strings. They can contain either single or double quotes:

    + + +print('''"Oh no", she exclaimed, "Ben's bike is broken!"''') + + +

    Triple quoted strings can even span multiple lines:

    + + +print("""This message will span +several lines +of the text.""") + + +

    Python doesn't care whether you use single or double quotes or the + three-of-a-kind quotes to surround your strings. Once it has parsed the text of + your program or command, the way it stores the value is identical in all cases, + and the surrounding quotes are not part of the value.

    + + +print('This is a string.') +print("""And so is this.""") + + +

    So the Python language designers usually chose to surround their strings by + single quotes. What do you think would happen if the string already contained + single quotes?

    +

    When you type a large integer, you might be tempted to use commas between + groups of three digits, as in 42,000. This is not a legal integer in + Python, but it does mean something else, which is legal:

    + + +print(42500) +print(42,500) + + +

    Well, that's not what we expected at all! Because of the comma, Python chose to + treat this as a pair of values. In fact, a print statement can print any number of values as long + as you separate them by commas. Notice that the values are separated by spaces when they are displayed.

    + + +print(42, 17, 56, 34, 11, 4.35, 32) +print(3.4, "hello", 45) + + +

    Remember not to put commas or spaces in your integers, no + matter how big they are. Also revisit what we said in the previous chapter: + formal languages are strict, the notation is concise, and even the smallest + change might mean something quite different from what you intended.

    + +

    The examples in this online text describe how print works in Python 3. If you install Python 2.7 on your machine, it will work slightly differently. One difference is that print is not called as a function, so there are no parentheses around the values to be printed.

    +
    +

    + Check your understanding +

    + + +

    How can you determine the type of a variable?

    +
    + + + +

    Print out the value and determine the data type based on the value printed.

    +
    + +

    You may be able to determine the data type based on the printed value, but it may also be deceptive, like when a string prints, there are no quotes around it.

    +
    +
    + + +

    Use the type function.

    +
    + +

    The type function will tell you the class the value belongs to.

    +
    +
    + + +

    Use it in a known equation and print the result.

    +
    + +

    Only numeric values can be used in equations.

    +
    +
    + + +

    Look at the declaration of the variable.

    +
    + +

    In Python variables are not declared. Values, not variables, have types in Python. A variable can even take on values with different types during a program's execution.

    +
    +
    +
    +
    + + +

    What is the data type of ‘this is what kind of data'?

    +
    + + + +

    Character

    +
    + +

    It is not a single character.

    +
    +
    + + +

    Integer

    +
    + +

    The data is not numeric.

    +
    +
    + + +

    Float

    +
    + +

    The value is not numeric with a decimal point.

    +
    +
    + + +

    String

    +
    + +

    Strings can be enclosed in single quotes.

    +
    +
    +
    +
    +
    diff --git a/pretext/SimplePythonData/Exercises.ptx b/pretext/SimplePythonData/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/SimplePythonData/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/SimplePythonData/FunctionCalls.ptx b/pretext/SimplePythonData/FunctionCalls.ptx new file mode 100644 index 00000000..17bc398e --- /dev/null +++ b/pretext/SimplePythonData/FunctionCalls.ptx @@ -0,0 +1,73 @@ + +

    + Function Calls +

    The Python interpreter can compute new values with function calls. You are familiar with the idea of functions from high school algebra. There you might define a function f by specifying how it transforms an input into an output, f(x) = 3x + 2. Then, you might write f(5) and expect to get the value 17.

    +

    Python adopts a similar syntax for invoking functions. If there is a named function foo that takes a single input, we can invoke foo on the value 5 by writing foo(5).

    +

    There are many built-in functions available in Python. You'll be seeing some in this chapter and the next couple of chapters.

    +

    Functions are like factories that take in some material, do some operation, and then send out the resulting object.

    + Icon that represents a function. Appears simliar to a factory with three places on top for inputs to come in and a place on the bottom for the output/return value to come out. +

    In this case, we refer to the materials as arguments or inputs and the resulting object is referred to as output or return value. This process of taking input, doing something, and then sending back the output is demonstrated in the gif below.

    + Animated gif that deomnstrates using the visual representation of a factory as used above. Shows three arrows coming into the function to represent that input or arguments that a function can require. It then shows the function object shaking, representing an action being completed by the function. Then it shows annother arrow leaving the function image, which represents a return value or output coming from the factory. + +

    Don't confuse the output value of a function with the output window. The output of a function is a Python value and we can never really see the internal representation of a value. But we can draw pictures to help us imagine what values are, or we can print them to see an external representation in the output window.

    +

    To confuse things even more, print is actually a function. All functions produce output values. Only the print function causes things to appear in the output window.

    +
    +

    It is also possible for programmers to define new functions in their programs. You will learn how to do that later in the course. For now, you just need to learn how to invoke, or call, a function, and understand that the execution of the function returns a computed value.

    + + +def square(x): + return x * x + +def sub(x, y): + return x - y + + +

    We've defined two functions above. The code is hidden so as not to bother you (yet) with how functions are defined. + square takes a single input parameter, and returns that input multiplied by itself. sub takes two input + parameters and returns the result of subtracting the second from the first. Obviously, these functions are not + particularly useful, since we have the operators * and - available. But they illustrate how functions work. + The visual below illustrates how the square function works.

    + a visual of the square function. Four is provided as the input, the function object shakes, and then sixteen comes out from the bottom of the function object. + + +print(square(3)) +square(5) +print(sub(6, 4)) +print(sub(5, 9)) + + +

    Notice that when a function takes more than one input parameter, the inputs are separated by a comma. Also notice + that the order of the inputs matters. The value before the comma is treated as the first input, the value after it + as the second input.

    +

    Again, remember that when Python performs computations, the results are only shown in the output window if there's a + print statement that says to do that. In the activecode window above, square(5) produces the value 25 but we never + get to see that in the output window, because it is not printed.

    + + Function calls as part of complex expressions +

    Anywhere in an expression that you can write a literal like a number, you can also write a function invocation that + produces a number.

    +

    For example:

    + + +print(square(3) + 2) +print(sub(square(3), square(1+1))) + + +

    Let's take a look at how that last execution unfolds.

    + +
    + + Functions are objects; parentheses invoke functions +

    Remember that earlier we mentioned that some kinds of Python objects don't have a nice printed representation? Functions are + themselves just objects. If you tell Python to print the function object, rather than printing the results of invoking + the function object, you'll get one of those not-so-nice printed representations.

    +

    Just typing the name of the function refers to the function as an object. Typing the name of the function followed by + parentheses () invokes the function.

    + + +print(square) +print(square(3)) + + +
    +
    diff --git a/pretext/SimplePythonData/Glossary.ptx b/pretext/SimplePythonData/Glossary.ptx new file mode 100644 index 00000000..6959b88f --- /dev/null +++ b/pretext/SimplePythonData/Glossary.ptx @@ -0,0 +1,185 @@ + +
    + Glossary + + + assignment statement +

    A statement that assigns a value to a name (variable). To the left of + the assignment operator, =, is a name. To the right of the + assignment token is an expression which is evaluated by the Python + interpreter and then assigned to the name. The difference between the + left and right hand sides of the assignment statement is often + confusing to new programmers. In the following assignment:

    + + +n = n + 1 + + +

    n plays a very different role on each side of the =. On the + right it is a value and makes up part of the expression which will + be evaluated by the Python interpreter before assigning it to the name + on the left.

    +
    + + assignment token +

    = is Python's assignment token, which should not be confused + with the mathematical comparison operator using the same symbol.

    +
    + + boolean expression +

    An expression that is either true or false.

    +
    + + boolean value +

    There are exactly two boolean values: True and False. Boolean + values result when a boolean expression is evaluated by the Python + interepreter. They have type bool.

    +
    + + class +

    see data type below

    +
    + + comment +

    Information in a program that is meant for other programmers (or anyone + reading the source code) and has no effect on the execution of the + program.

    +
    + + data type +

    A set of values. The type of a value determines how it can be used in + expressions. So far, the types you have seen are integers (int), + floating-point numbers (float), and strings (str).

    +
    + + decrement +

    Decrease by 1.

    +
    + + evaluate +

    To simplify an expression by performing the operations in order to + yield a single value.

    +
    + + expression +

    A combination of operators and operands (variables and values) that represents a + single result value. Expressions are evaluated to give that result.

    +
    + + float +

    A Python data type which stores floating-point numbers. + Floating-point numbers are stored internally in two parts: a base and + an exponent. When printed in the standard format, they look like + decimal numbers. Beware of rounding errors when you use floats, + and remember that they are only approximate values.

    +
    + + increment +

    Both as a noun and as a verb, increment means to increase by 1.

    +
    + + initialization (of a variable) +

    To initialize a variable is to give it an initial value. + Since in Python variables don't exist + until they are assigned values, they are initialized when they are + created. In other programming languages this is not the case, and + variables can be created without being initialized, in which case they + have either default or garbage values.

    +
    + + int +

    A Python data type that holds positive and negative whole numbers.

    +
    + + integer division +

    An operation that divides one integer by another and yields an integer. + Integer division yields only the whole number of times that the + numerator is divisible by the denominator and discards any remainder.

    +
    + + keyword +

    A reserved word that is used by the compiler to parse program; you + cannot use keywords like if, def, and while as variable + names.

    +
    + + literal +

    A number or string that is written directly in a program. Sometimes these are also referred to as literal values, or just values, but be careful not to confuse a literal value as written in a program with an internal value maintained by the Python interpreter during execution of a program.

    +
    + + logical operator +

    One of the operators that combines boolean expressions: and, + or, and not.

    +
    + + modulus operator +

    An operator, denoted with a percent sign ( %), that works on + integers and yields the remainder when one number is divided by + another.

    +
    + + object +

    Also known as a data object (or data value). The fundamental things that programs are designed to + manipulate (or that programmers ask to do things for them).

    +
    + + operand +

    One of the values on which an operator operates.

    +
    + + operator +

    A special symbol that represents a simple computation like addition, + multiplication, or string concatenation.

    +
    + + prompt string +

    Used during interactive input to provide the use with hints as to what type of value to enter.

    +
    + + reference diagram +

    A picture showing a variable with an arrow pointing to the value (object) that the variable refers to. See also state snapshot.

    +
    + + rules of precedence +

    The set of rules governing the order in which expressions involving + multiple operators and operands are evaluated.

    +
    + + state snapshot +

    A graphical representation of a set of variables and the values to + which they refer, taken at a particular instant during the program's + execution.

    +
    + + statement +

    An instruction that the Python interpreter can execute. So far we have + only seen the assignment statement, but we will soon meet the + import statement and the for statement.

    +
    + + str +

    A Python data type that holds a string of characters.

    +
    + + type conversion function +

    A function that can convert a data value from one type to another.

    +
    + + value +

    A number or string (or other things to be named later) that can be + stored in a variable or computed in an expression.

    +
    + + variable +

    A name that refers to a value.

    +
    + + variable name +

    A name given to a variable. Variable names in Python consist of a + sequence of letters (a..z, A..Z, or _) and digits (0..9) that begins + with a letter. In best programming practice, variable names should be + chosen so that they describe their use in the program, making the + program self documenting.

    +
    +
    +
    diff --git a/pretext/SimplePythonData/HardCoding.ptx b/pretext/SimplePythonData/HardCoding.ptx new file mode 100644 index 00000000..04a4b6d0 --- /dev/null +++ b/pretext/SimplePythonData/HardCoding.ptx @@ -0,0 +1,37 @@ + +
    + 👩‍💻 Hard-Coding +

    As you begin programming, you'll see that there are many ways to solve problems. You'll also find that one of the thrills + of programming is how easily you can do things correctly that humans could easily make errors on. For example, you'll + learn how to write just a very small bit of code to find the 1047th character in a sentence that might be thousands of + letters long, and you'll learn how to do the exact same computation on many different pieces of data.

    +

    We'll often tell you in this textbook not to hard-code answers. What does that mean?

    +

    Some things in programming you can only do by typing them out. As you've seen, when you have to assign a value to a + variable, you simply type something like xyz = 6. No other way.

    +

    But in most cases, it's best not to do computation in your head or write complete answers to programming problems out by + hand. That's where hard-coding comes in. Don't hard code basically means, you should rely on your code, your logic, + your program, and you should not write things out by hand or do computation in your head – even if you can do so easily.

    +

    When you are writing code or working on the answer to a programming exercise, you should ask yourself: Would my answer be + correct even if the provided variables had different values? If the answer to that question is no, you're probably hard- + coding, which you should avoid – and there's probably at least a slightly more concise way to construct your answer!

    +

    For example, in this following code, if you're asked in an exercise to create a variable zx and assign it the value of + the sum of the value of y and the value of x, writing zx = 55 is hard-coding.

    + + +x = 20 +y = 35 +abc = 62 + + +

    The operation 20 + 35 may be easy math to do in your head or with a calculator, but when you learn to program, you + want to train yourself to notice useful patterns of how to solve problems, which will make your life easier (perhaps + beyond programming, even).

    +

    The correct way to answer that sort of exercise would be to write: zx = y + x (or zx = x + y, as you were just + reminded of the order of operations). That is not hard-coding, and it will be correct no matter what the values of x + and y are.

    +

    In the code above, if the value of x were 40, 55 would not be the correct value for zx to have. But + zx = y + x would still be absolutely correct.

    +

    Try as much as you can not to rely on your brilliant but fallible human brain to do computation when you program – use + your brain to determine how to write the correct code to solve the problem for you! That's why we require you to avoid hard + -coding for most exercises in this book.

    +
    diff --git a/pretext/SimplePythonData/Input.ptx b/pretext/SimplePythonData/Input.ptx new file mode 100644 index 00000000..4d9c7905 --- /dev/null +++ b/pretext/SimplePythonData/Input.ptx @@ -0,0 +1,106 @@ +
    + Input +

    Our programs get more interesting if they don't do exactly the same thing every time they run. + One way to make them more interesting is to get input from the user. Luckily, in Python + there is a built-in function to accomplish this task. It is called input.

    + +n = input("Please enter your name: ") + +

    The input function allows the programmer to provide a prompt string. In the example above, + it is Please enter your name: . When the function is evaluated, the prompt is + shown (in the browser, look for a popup window). + The user of the program can type some text and press return. When this + happens the text that has been entered is returned from the input function, + and in this case assigned to the variable n. Run this example a few times and + try some different names in the input box that appears.

    + + + +n = input("Please enter your name: ") +print("Hello", n) + + +

    It is very important to note that the input function returns a string value. Even if you + asked the user to enter their age, you would get back a string like + "17". It would be your job, as the programmer, to convert that string into + an int or a float, using the int or float converter functions we saw + earlier.

    + +

    We often use the word input (or, synonymously, argument) to refer to the values that are passed to any function. Do not confuse that with the input function, which asks the user of a program to type in a value. Like any function, input itself takes an input argument and produces an output. The input is a character string that is displayed as a prompt to the user. The output is whatever character string the user types.

    +

    This is analogous to the potential confusion of function outputs with the contents of the output window. Every function produces an output, which is a Python value. Only the print function puts things in the output window. Most functions take inputs, which are Python values. Only the input function invites users to type something.

    +
    +

    Here is a program that turns a number of seconds into more human readable counts of hours, + minutes, and seconds. A call to input() allows the user to enter the number of seconds. + Then we convert that string to an integer. From there we use the division and modulus + operators to compute the results.

    + + + +str_seconds = input("Please enter the number of seconds you wish to convert") +total_secs = int(str_seconds) + +hours = total_secs // 3600 +secs_still_remaining = total_secs % 3600 +minutes = secs_still_remaining // 60 +secs_finally_remaining = secs_still_remaining % 60 + +print("Hrs=", hours, "mins=", minutes, "secs=", secs_finally_remaining) + + +

    The variable str_seconds will refer to the string that is entered by the user. As we said above, even though this string may be 7684, it is still a string and not a number. To convert it to an integer, we use the int function. + The result is referred to by total_secs. Now, each time you run the program, you can enter a new value for the number of seconds to be converted.

    +

    Check your understanding

    + + + + +

    What is printed when the following statements execute?

    + +n = input("Please enter your age: ") +# user types in 18 +print(type(n)) + + +
    + + + + +

    <class 'str'>

    +
    + +

    All input from users is read in as a string.

    +
    +
    + + + +

    <class 'int'>

    +
    + +

    Even though the user typed in an integer, it does not come into the program as an integer.

    +
    +
    + + + +

    <class 18>

    +
    + +

    18 is the value of what the user typed, not the type of the data.

    +
    +
    + + + +

    18

    +
    + +

    18 is the value of what the user typed, not the type of the data.

    +
    +
    +
    + +
    +
    + diff --git a/pretext/SimplePythonData/Operators.ptx b/pretext/SimplePythonData/Operators.ptx new file mode 100644 index 00000000..58ab1406 --- /dev/null +++ b/pretext/SimplePythonData/Operators.ptx @@ -0,0 +1,210 @@ + +
    + Operators and Operands +

    You can build complex expressions out of simpler ones using operators. Operators are special tokens that represent computations like addition, + multiplication and division. The values the operator works on are called + operands.

    +

    The following are all legal Python expressions whose meaning is more or less + clear:

    +
    20 + 32
    +5 ** 2
    +(5 + 9) * (15 - 7)
    +

    The tokens +, -, and *, and the use of parentheses for grouping, + mean in Python what they mean in mathematics. The asterisk (*) is the + token for multiplication, and ** is the token for exponentiation. + Addition, subtraction, multiplication, and exponentiation all do what you + expect.

    +

    Remember that if we want to see the results of the computation, the program needs to specify that with the word print. The first three computations occur, but their results are not printed out.

    + + +20 + 32 +5 ** 2 +(5 + 9) * (15 - 7) +print(7 + 5) + + +

    In Python 3, which we will be using, the division operator / produces a floating point result (even if the result is an integer; 4/2 is 2.0). If you want truncated division, which ignores the remainder, you can use the // operator (for example, 5//2 is 2).

    + + +print(9 / 5) +print(5 / 9) +print(9 // 5) + + +

    Pay particular attention to the examples above. Note that 9//5 truncates rather than rounding, so it produces the value 1 rather 2.

    +

    The truncated division operator, //, also works on floating point numbers. It truncates to the nearest integer, but still produces a floating point result. Thus 7.0 // 3.0 is 2.0.

    + + +print(7.0 / 3.0) +print(7.0 // 3.0) + + +

    The modulus operator, sometimes also called the remainder operator or integer remainder operator works on integers (and integer expressions) and yields + the remainder when the first operand is divided by the second. In Python, the + modulus operator is a percent sign (%). The syntax is the same as for other + operators.

    + + +print(7 // 3) # This is the integer division operator +print(7 % 3) # This is the remainder or modulus operator + + +

    In the above example, 7 divided by 3 is 2 when we use integer division and there is a remainder of 1.

    +

    The modulus operator turns out to be surprisingly useful. For example, you can + check whether one number is divisible by another—if x % y is zero, then + x is divisible by y. + Also, you can extract the right-most digit or digits from a number. For + example, x % 10 yields the right-most digit of x (in base 10). + Similarly x % 100 yields the last two digits.

    +

    + Check your understanding +

    + + +

    What value is printed when the following statement executes?

    + + +print(18 / 4) + + +
    + + + +

    4.5

    +
    + +

    Because the result is not an integer, a floating point answer is produced.

    +
    +
    + + +

    5

    +
    + +

    Even if // were used, it would still truncate, not round

    +
    +
    + + +

    4

    +
    + +

    Perhaps you are thinking of the integer division operator, //

    +
    +
    + + +

    4.0

    +
    + +

    / performs exact division, without truncation

    +
    +
    + + +

    2

    +
    + +

    / does division. Perhaps you were thinking of %, which computes the remainder?

    +
    +
    +
    +
    + + +

    What value is printed when the following statement executes?

    + + +print(18.0 // 4) + + +
    + + + +

    4.5

    +
    + +

    - // does truncated division.

    +
    +
    + + +

    5

    +
    + +

    - Neither / nor // leads to rounding up

    +
    +
    + + +

    4

    +
    + +

    - Even though it truncates, it produces a floating point result

    +
    +
    + + +

    4.0

    +
    + +

    - Yes, even though it truncates, it produces a floating point result because 18.0 is a float

    +
    +
    + + +

    2

    +
    + +

    - / does division. Perhaps you were thinking of %, which computes the remainder?

    +
    +
    +
    +
    + + +

    What value is printed when the following statement executes?

    + + +print(18 % 4) + + +
    + + + +

    4.25

    +
    + +

    The % operator returns the remainder after division.

    +
    +
    + + +

    5

    +
    + +

    The % operator returns the remainder after division.

    +
    +
    + + +

    4

    +
    + +

    The % operator returns the remainder after division.

    +
    +
    + + +

    2

    +
    + +

    The % operator returns the remainder after division.

    +
    +
    +
    +
    +
    diff --git a/pretext/SimplePythonData/OrderofOperations.ptx b/pretext/SimplePythonData/OrderofOperations.ptx new file mode 100644 index 00000000..419e28e6 --- /dev/null +++ b/pretext/SimplePythonData/OrderofOperations.ptx @@ -0,0 +1,104 @@ + +
    + Order of Operations +

    When more than one operator appears in an expression, the order of evaluation depends on the rules + of precedence. Python follows the same precedence rules for its mathematical operators + that mathematics does.

    +
      +
    1. +

      + Parentheses have the highest precedence and can be used to force an + expression to evaluate in the order you want. Since expressions in parentheses are + evaluated first, 2 * (3-1) is 4, and (1+1)**(5-2) is 8. You can also + use parentheses to make an expression easier to read, as in (minute * 100) / 60: + in this case, the parentheses don't change the result, but they reinforce that the + expression in parentheses will be evaluated first.

      +

      + Exponentiation has the next highest precedence, so 2**1+1 is 3 and not + 4, and 3*1**3 is 3 and not 27. Can you explain why?

      +

      + Multiplication and both division operators have the same precedence, which is + higher than addition and subtraction, which also have the same precedence. So + 2*3-1 yields 5 rather than 4, and 5-2*2 is 1, not 6.

      +

      + Operators with the same precedence are evaluated from left-to-right. In + algebra we say they are left-associative. So in the expression 6-3+2, + the subtraction happens first, yielding 3. We then add 2 to get the result 5. If the + operations had been evaluated from right to left, the result would have been + 6-(3+2), which is 1.

      +
    2. +
    + + Note +

    Due to some historical quirk, an exception to the left-to-right left-associative rule is + the exponentiation operator **. A useful hint is to always use parentheses to + force exactly the order you want when exponentiation is involved:

    +
    + + + + print(2 ** 3 ** 2) # the right-most ** operator gets done first! + print((2 ** 3) ** 2) # use parentheses to force the order you want! + + + + + Note +

    This is a second way that parentheses are used in Python. The first way you've already + seen is that () indicates a function call, with the inputs going inside the parentheses. + How can Python tell when parentheses specify to call a function, and when they are just + forcing the order of operations for ambiguous operator expressions? + + The answer is that if there's a an expression to the left of the parentheses that + evaluates to a function object, then the parentheses indicate a function call, and + otherwise not. You will have to get used to making the same inference when you see + parentheses: is this a function call, or just specifying precedence?

    +
    +

    + Check your understanding +

    + + +

    What is the value of the follwing expression?

    + + + 16 - 2 * 5 // 3 + 1 + + +
    + + + +

    14

    +
    + +

    Using parentheses, the expression is evaluated as (2*5) first, then (10 // 3), then (16-3), and then (13+1).

    +
    +
    + + +

    24

    +
    + +

    Remember that * has precedence over -.

    +
    +
    + + +

    3

    +
    + +

    Remember that // has precedence over -.

    +
    +
    + + +

    13.667

    +
    + +

    Remember that // does integer division.

    +
    +
    +
    +
    +
    diff --git a/pretext/SimplePythonData/Reassignment.ptx b/pretext/SimplePythonData/Reassignment.ptx new file mode 100644 index 00000000..c265e62a --- /dev/null +++ b/pretext/SimplePythonData/Reassignment.ptx @@ -0,0 +1,108 @@ + +
    + Reassignment +
    diff --git a/pretext/SimplePythonData/StatementsandExpressions.ptx b/pretext/SimplePythonData/StatementsandExpressions.ptx new file mode 100644 index 00000000..399e1ea7 --- /dev/null +++ b/pretext/SimplePythonData/StatementsandExpressions.ptx @@ -0,0 +1,147 @@ + +
    + Statements and Expressions +
    diff --git a/pretext/SimplePythonData/UpdatingVariables.ptx b/pretext/SimplePythonData/UpdatingVariables.ptx new file mode 100644 index 00000000..cc93fa69 --- /dev/null +++ b/pretext/SimplePythonData/UpdatingVariables.ptx @@ -0,0 +1,233 @@ + +
    + Updating Variables +
    diff --git a/pretext/SimplePythonData/Values.ptx b/pretext/SimplePythonData/Values.ptx new file mode 100644 index 00000000..f7973a23 --- /dev/null +++ b/pretext/SimplePythonData/Values.ptx @@ -0,0 +1,68 @@ + +
    + Values and Data Types +

    A value is one of the fundamental things — like a word or a number — that a program manipulates. + Some values are 5 (the result when we add 2 + 3), and "Hello, World!". These objects are classified into + different classes, or data types: 4 is an integer, and Hello, World! is a string, so-called because it contains a + string or sequence of letters. You (and the interpreter) can identify strings because they are enclosed in quotation + marks.

    +

    We can specify values directly in the programs we write. For example we can specify a number as a literal just by (literally) typing it directly into the program (e.g., 5 or 4.32). In a program, we specify a word, or more generally a string of characters, by enclosing the characters inside quotation marks (e.g., "Hello, World!").

    +

    During execution of a program, the Python interpreter creates an internal representation of literals that are specified in a program. It can then manipulate them, for example by multiplying two numbers. We call the internal representations objects or just values.

    +

    You can't directly see the internal representations of values. You can, however, use the print function to see a printed representation in the output window.

    +

    The printed representation of a number uses the familiar decimal representation (reading Roman Numerals is a fun challenge in museums, but thank goodness the Python interpreter doesn't present the number 2014 as MMXIV in the output window). Thus, the printed representation of a number shown in the output window is the same as the literal that you specify in a program.

    +

    The printed representation of a character string, however, is not exactly the same as the literal used to specify the string in a program. For the literal in a program, you enclose the string in quotation marks. The printed representation, in the output window, omits the quotation marks.

    + + +print(3.2) +print("Hello, World!") + + + +

    Literals appear in programs. The Python interpreter turns literals into values, which have internal representations that people never get to see directly. Outputs are external representations of values that appear in the output window. When we are being careful, we will use the terms this way. Sometimes, however, we will get a little sloppy and refer to literals or external representations as values.

    +
    +

    Numbers with a decimal point belong to a class + called float, because these numbers are represented in a format called + floating-point. At this stage, you can treat the words class and type + interchangeably. We'll come back to a deeper understanding of what a class + is in later chapters.

    +

    You will soon encounter other types of objects as well, such as lists and dictionaries. Each of these has its own special representation for specifying an object as a literal in a program, and for displaying an object when you print it. For example, list contents are enclosed in square brackets [ ]. You will also encounter some more complicated objects that do not have very nice printed representations: printing those won't be very useful.

    +

    + Check your understanding +

    + + +

    What appears in the output window when the following statement executes?

    + + +print("Hello World!") + + +
    + + + +

    Nothing is printed. It generates a runtime error.

    +
    + +

    "Hello World!" has a printed representation, so there will not be an error.

    +
    +
    + + +

    "Hello World!"

    +
    + +

    The literal in the program includes the quote marks, but the printed representation omits them.

    +
    +
    + + +

    Hello World!

    +
    + +

    The printed representation omits the quote marks that are included in the string literal.

    +
    +
    +
    +
    +
    diff --git a/pretext/SimplePythonData/VariableNamesandKeywords.ptx b/pretext/SimplePythonData/VariableNamesandKeywords.ptx new file mode 100644 index 00000000..14773c17 --- /dev/null +++ b/pretext/SimplePythonData/VariableNamesandKeywords.ptx @@ -0,0 +1,179 @@ + +
    + Variable Names and Keywords +

    Variable names can be arbitrarily long. They can contain both letters and + digits, but they have to begin with a letter or an underscore. Although it is + legal to use uppercase letters, by convention we don't. If you do, remember + that case matters. Bruce and bruce are different variables.

    + +

    Variable names can never contain spaces.

    +
    +

    The underscore character ( _) can also appear in a name. It is often used in + names with multiple words, such as my_name or price_of_tea_in_china. + There are some situations in which names beginning with an underscore have + special meaning, so a safe rule for beginners is to start all names with a + letter.

    +

    If you give a variable an illegal name, you get a syntax error. In the example below, each + of the variable names is illegal.

    +
    76trombones = "big parade"
    +more$ = 1000000
    +class = "Computer Science 101"
    +

    76trombones is illegal because it does not begin with a letter. more$ + is illegal because it contains an illegal character, the dollar sign. But + what's wrong with class?

    +

    It turns out that class is one of the Python keywords. Keywords define + the language's syntax rules and structure, and they cannot be used as variable + names. + Python has thirty-something keywords (and every now and again improvements to + Python introduce or eliminate one or two):

    + + + + + and + + + as + + + assert + + + break + + + class + + + continue + + + + + def + + + del + + + elif + + + else + + + except + + + exec + + + + + finally + + + for + + + from + + + global + + + if + + + import + + + + + in + + + is + + + lambda + + + nonlocal + + + not + + + or + + + + + pass + + + raise + + + return + + + try + + + while + + + with + + + + + yield + + + True + + + False + + + None + + + + + + + +
    +

    You might want to keep this list handy. If the interpreter complains about one + of your variable names and you don't know why, see if it is on this list.

    +

    + Check your understanding +

    + + +

    True or False: the following is a legal variable name in Python: A_good_grade_is_A+

    +
    + + + +

    True

    +
    + +

    - The + character is not allowed in variable names.

    +
    +
    + + +

    False

    +
    + +

    - The + character is not allowed in variable names (everything else in this name is fine).

    +
    +
    +
    +
    +
    diff --git a/pretext/SimplePythonData/Variables.ptx b/pretext/SimplePythonData/Variables.ptx new file mode 100644 index 00000000..7bd1f817 --- /dev/null +++ b/pretext/SimplePythonData/Variables.ptx @@ -0,0 +1,158 @@ + +
    + Variables +
    diff --git a/pretext/SimplePythonData/WPChoosingtheRightVariableName.ptx b/pretext/SimplePythonData/WPChoosingtheRightVariableName.ptx new file mode 100644 index 00000000..263418a0 --- /dev/null +++ b/pretext/SimplePythonData/WPChoosingtheRightVariableName.ptx @@ -0,0 +1,21 @@ + +
    + 👩‍💻 Choosing the Right Variable Name +

    Programmers generally choose names for their variables that are meaningful to + the human readers of the program — they help the programmer document, or + remember, what the variable is used for. Beginning programmers sometimes think it is funny to use strange or obscene names for their variables. This is not good practice and will not amuse your professor. Get in the habit of using meaningful names right away.

    + +

    Beginners sometimes confuse meaningful to the human readers with + meaningful to the computer. So they'll wrongly think that because + they've called some variable average or pi, it will somehow + automagically calculate an average, or automagically associate the variable + pi with the value 3.14159. No! The computer doesn't attach semantic + meaning to your variable names.

    +

    So you'll find some instructors who deliberately don't choose meaningful + names when they teach beginners — not because they don't think it is a + good habit, but because they're trying to reinforce the message that you, + the programmer, have to write some program code to calculate the average, + or you must write an assignment statement to give a variable the value you + want it to have.

    +
    +
    diff --git a/pretext/SimplePythonData/intro-VariablesExpressionsandStatements.ptx b/pretext/SimplePythonData/intro-VariablesExpressionsandStatements.ptx new file mode 100644 index 00000000..2cc61566 --- /dev/null +++ b/pretext/SimplePythonData/intro-VariablesExpressionsandStatements.ptx @@ -0,0 +1,79 @@ + +
    + Introduction +
    diff --git a/pretext/SimplePythonData/toctree.ptx b/pretext/SimplePythonData/toctree.ptx new file mode 100644 index 00000000..96befd28 --- /dev/null +++ b/pretext/SimplePythonData/toctree.ptx @@ -0,0 +1,22 @@ + + + Variables, Statements, and Expressions + + + + + + + + + + + + + + + + + + + diff --git a/pretext/SimplePythonData/week1a2.ptx b/pretext/SimplePythonData/week1a2.ptx new file mode 100644 index 00000000..c58a379b --- /dev/null +++ b/pretext/SimplePythonData/week1a2.ptx @@ -0,0 +1,122 @@ + +
    + Chapter Assessment +

    + Check your understanding +

    + + +

    There is a function we are providing in for you in this problem called square. It takes one integer and returns the square of that integer value. Write code to assign a variable called xyz the value 5*5 (five squared). Use the square function, rather than just multiplying with *.

    +
    + + +xyz = "" + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(type(xyz), type(3), "Checking type of xyz") + self.assertEqual(xyz, 25, "Checking if xyz is 25") + self.assertIn('square', self.getEditorText(), "Testing that 'square' is in your code. (Don't worry about Actual and Expected Values.)") + +myTests().main() + + +
    + + +

    Write code to assign the number of characters in the string rv to a variable num_chars.

    +
    + + +rv = """Once upon a midnight dreary, while I pondered, weak and weary, + Over many a quaint and curious volume of forgotten lore, + While I nodded, nearly napping, suddenly there came a tapping, + As of some one gently rapping, rapping at my chamber door. + 'Tis some visitor, I muttered, tapping at my chamber door; + Only this and nothing more.""" + +# Write your code here! + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(num_chars, len(rv), "Testing that num_chars has been set to the length of rv") + +myTests().main() + + +
    + + +

    The code below initializes two variables, z and y. We want to assign the total number of characters in z and in y to the variable a. Which of the following solutions, if any, would be considered hard coding?

    + + +z = "hello world" +y = "welcome!" + + +
    + + + +

    a = len("hello worldwelcome!")

    +
    + +

    Though we are using the len function here, we are hardcoding what len should return the length of. We are not referencing z or y.

    +
    +
    + + +

    a = 11 + 8

    +
    + +

    This is hardcoding, we are writing in the value without referencing z or y.

    +
    +
    + + +

    a = len(z) + len(y)

    +
    + +

    This is not considered hard coding. We are using the function len to determine the length of what is stored in z and y, which is a correct way to approach this problem.

    +
    +
    + + +

    a = len("hello world") + len("welcome!")

    +
    + +

    Though we are using the len function here, we are hardcoding what len should return the length of each time we call len. We are not referencing z or y.

    +
    +
    + + +

    none of the above are hardcoding.

    +
    + +

    At least one of these solutions is considered hardcoding. Take another look.

    +
    +
    +
    +
    + + +

    (This is not an assessment question) The code below defines functions used by one of the questions above. Do not modify the code, but feel free to take a look.

    +
    + + +def square(num): + return num**2 + + +
    +
    diff --git a/pretext/Sorting/ChapterAssessment.ptx b/pretext/Sorting/ChapterAssessment.ptx new file mode 100644 index 00000000..8726ddc8 --- /dev/null +++ b/pretext/Sorting/ChapterAssessment.ptx @@ -0,0 +1,242 @@ + +
    + Chapter Assessment + + +

    Sort the following string alphabetically, from z to a, and assign it to the variable sorted_letters.

    +
    + + +letters = "alwnfiwaksuezlaeiajsdl" +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted_letters, sorted(letters, reverse = True), "Testing that sorted_letters has the correct value.") + +myTests().main() + + +
    + + +

    Sort the list below, animals, into alphabetical order, a-z. Save the new list as animals_sorted.

    +
    + + +animals = ['elephant', 'cat', 'moose', 'antelope', 'elk', 'rabbit', 'zebra', 'yak', 'salamander', 'deer', 'otter', 'minx', 'giraffe', 'goat', 'cow', 'tiger', 'bear'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(animals_sorted, ['antelope', 'bear', 'cat', 'cow', 'deer', 'elephant', 'elk', 'giraffe', 'goat', 'minx', 'moose', 'otter', 'rabbit', 'salamander', 'tiger', 'yak', 'zebra'], "Testing that animals_sorted was created correctly.") + +myTests().main() + + +
    + + +

    Write code to rearrange the strings in the list winners so that they are in alphabetical order by first name from A to Z.

    +
    + + +winners = ['Kazuo Ishiguro', 'Rainer Weiss', 'Youyou Tu', 'Malala Yousafzai', 'Alice Munro', 'Alvin E. Roth'] + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(winners, ['Alice Munro', 'Alvin E. Roth', 'Kazuo Ishiguro', 'Malala Yousafzai', 'Rainer Weiss', 'Youyou Tu'], "Testing that winners is set correctly.") + +myTests().main() + + +
    + + +

    Write code to switch the order of the winners list so that it is now Z to A, by first name. Assign this list to the variable z_winners.

    +
    + + +winners = ['Alice Munro', 'Alvin E. Roth', 'Kazuo Ishiguro', 'Malala Yousafzai', 'Rainer Weiss', 'Youyou Tu'] + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(z_winners, ['Youyou Tu','Rainer Weiss', 'Malala Yousafzai','Kazuo Ishiguro', 'Alvin E. Roth', 'Alice Munro'], "Testing that z_winners is set correctly.") + +myTests().main() + + +
    + + +

    Write code to switch the order of the winners list so that it is now A to Z by last name. Assign this list to the variable z_winners.

    +
    + + +winners = ['Alice Munro', 'Alvin E. Roth', 'Kazuo Ishiguro', 'Malala Yousafzai', 'Rainer Weiss', 'Youyou Tu'] + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def test_output(self): + self.assertEqual(z_winners, ['Kazuo Ishiguro', 'Alice Munro', 'Alvin E. Roth', 'Youyou Tu', 'Rainer Weiss', 'Malala Yousafzai'], "Testing that z_winners is set correctly.") + +myTests().main() + + +
    + + +

    The dictionary, medals, shows the medal count for six countries during the Rio Olympics. Sort the country names so they appear alphabetically. Save this list to the variable alphabetical.

    +
    + + +medals = {'Japan':41, 'Russia':56, 'South Korea':21, 'United States':121, 'Germany':42, 'China':70} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(alphabetical, sorted(medals.keys()), "Testing that alphabetical value is assigned to correct values.") + +myTests().main() + + +
    + + +

    Given the same dictionary, medals, now sort by the medal count. Save the three countries with the highest medal count to the list, top_three.

    +
    + + +medals = {'Japan':41, 'Russia':56, 'South Korea':21, 'United States':121, 'Germany':42, 'China':70} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(top_three, sorted(medals, key = lambda x: medals[x], reverse = True)[:3], "Testing that top_three value is assigned to correct values.") + +myTests().main() + + +
    + + +

    We have provided the dictionary groceries. You should return a list of its keys, but they should be sorted by their values, from highest to lowest. Save the new list as most_needed.

    +
    + + +groceries = {'apples': 5, 'pasta': 3, 'carrots': 12, 'orange juice': 2, 'bananas': 8, 'popcorn': 1, 'salsa': 3, 'cereal': 4, 'coffee': 5, 'granola bars': 15, 'onions': 7, 'rice': 1, 'peanut butter': 2, 'spinach': 9} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(most_needed, ['granola bars', 'carrots', 'spinach', 'bananas', 'onions', 'coffee', 'apples', 'cereal', 'salsa', 'pasta', 'peanut butter', 'orange juice', 'rice', 'popcorn'], "Testing that most_needed was created correctly.") + +myTests().main() + + +
    + + +

    Create a function called last_four that takes in a single ID number and returns the last four digits. For example, the number 17573005 should return 3005. Then, use the resulting function to sort the list of ids stored in the variable, ids, from lowest to highest. Save this sorted list in the variable, sorted_ids. Hint: Remember that only strings can be indexed, so conversions may be needed.

    +
    + + +def last_four(x): + + +ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFour(self): + self.assertEqual(sorted_ids, sorted(ids, key = last_four), "Testing that sorted_ids is assigned to correct values.") + +myTests().main() + + +
    + + +

    Sort the list ids by the last four digits of each id. Do this using lambda and not using a defined function. Save this sorted list in the variable sorted_id.

    +
    + + +ids = [17573005, 17572342, 17579000, 17570002, 17572345, 17579329] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(sorted_id, [17570002, 17572342, 17572345, 17573005, 17579000, 17579329], "Testing that sorted_id is assigned to correct value.") + self.assertIn("lambda", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    Sort the following list by each element's second letter a to z. Do so by using lambda. Assign the resulting value to the variable lambda_sort.

    +
    + + +ex_lst = ['hi', 'how are you', 'bye', 'apple', 'zebra', 'dance'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(lambda_sort, sorted(ex_lst, key = lambda z: z[1]), "Testing that lambda_sort has the correct value.") + self.assertIn("lambda", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    +
    diff --git a/pretext/Sorting/Exercises.ptx b/pretext/Sorting/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/Sorting/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/Sorting/Glossary.ptx b/pretext/Sorting/Glossary.ptx new file mode 100644 index 00000000..bc6b0df9 --- /dev/null +++ b/pretext/Sorting/Glossary.ptx @@ -0,0 +1,27 @@ + +

    + Glossary + + + sort +

    A method that sorts a list in place, changing the contents of the list. It + return None, not a new list.

    +
    + + sorted +

    A function that returns a sorted list, without changing the original.

    +
    + + reverse parameter +

    If True, the sorting is done in reverse order.

    +
    + + key parameter +

    If a value is specified, it must be a function object that takes one parameter. + The function will be called once for each item in the list that's getting + sorted. The return value will be used to decorate the item with a post-it + note. Values on the post-it notes are used to determine the sort order of + the items.

    +
    +
    +
    diff --git a/pretext/Sorting/Optionalkeyparameter.ptx b/pretext/Sorting/Optionalkeyparameter.ptx new file mode 100644 index 00000000..4fa520cb --- /dev/null +++ b/pretext/Sorting/Optionalkeyparameter.ptx @@ -0,0 +1,168 @@ + +
    + Optional key parameter +

    If you want to sort things in some order other than the natural or its reverse, you can provide an + additional parameter, the key parameter. For example, suppose you want to sort a list of numbers based on + their absolute value, so that -4 comes after 3? Or suppose you have a dictionary with strings as the keys + and numbers as the values. Instead of sorting them in alphabetic order based on the keys, you might like + to sort them in order based on their values.

    +

    First, let's see an example, and then we'll dive into how it works.

    +

    First, let's define a function absolute that takes a number and returns its absolute value. + (Actually, python provides a built-in function abs that does this, but we are going to + define our own, for reasons that will be explained in a minute.)

    + + +L1 = [1, 7, 4, -2, 3] + +def absolute(x): + if x >= 0: + return x + else: + return -x + +print(absolute(3)) +print(absolute(-119)) + +for y in L1: + print(absolute(y)) + + +

    Now, we can pass the absolute function to sorted in order to specify that we want the items + sorted in order of their absolute value, rather than in order of their actual value.

    + + +L1 = [1, 7, 4, -2, 3] + +def absolute(x): + if x >= 0: + return x + else: + return -x + +L2 = sorted(L1, key=absolute) +print(L2) + +#or in reverse order +print(sorted(L1, reverse=True, key=absolute)) + + +

    What's really going on there? We've done something pretty strange. Before, all the values we have + passed as parameters have been pretty easy to understand: numbers, strings, lists, Booleans, dictionaries. + Here we have passed a function object: absolute is a variable name whose value is the function. When we + pass that function object, it is not automatically invoked. Instead, it is just bound to the formal + parameter key of the function sorted.

    +

    We are not going to look at the source code for the built-in function sorted. But if we did, we would find + somewhere in its code a parameter named key with a default value of None. When a value is provided for that + parameter in an invocation of the function sorted, it has to be a function. What the sorted function does is + call that key function once for each item in the list that's getting sorted. It associates the result returned + by that function (the absolute function in our case) with the original value. Think of those associated values + as being little post-it notes that decorate the original values. The value 4 has a post-it note that says 4 + on it, but the value -2 has a post-it note that says 2 on it. Then the sorted function rearranges the original + items in order of the values written on their associated post-it notes.

    +

    To illustrate that the absolute function is invoked once on each item, during the execution of sorted, I have + added some print statements into the code.

    + + +L1 = [1, 7, 4, -2, 3] + +def absolute(x): + print("--- figuring out what to write on the post-it note for " + str(x)) + if x >= 0: + return x + else: + return -x + +print("About to call sorted") +L2 = sorted(L1, key=absolute) +print("Finished execution of sorted") +print(L2) + + +

    Note that this code never explicitly calls the absolute function at all. It passes the absolute function as a parameter + value to the sorted function. Inside the sorted function, whose code we haven't seen, that function gets invoked.

    + +

    It is a little confusing that we are reusing the word key so many times. The name of the optional parameter is + key. We will usually pass a parameter value using the keyword parameter passing mechanism. When we write + key=some_function in the function invocation, the word key is there because it is the name of the parameter, + specified in the definition of the sort function, not because we are using keyword-based parameter passing.

    +
    +

    + Check Your Understanding +

    + + +

    1. You will be sorting the following list by each element's second letter, a to z. Create a function to use when sorting, called second_let. It will take a string as input and return the second letter of that string. Then sort the list, create a variable called sorted_by_second_let and assign the sorted list to it. Do not use lambda.

    +
    + + +ex_lst = ['hi', 'how are you', 'bye', 'apple', 'zebra', 'dance'] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted_by_second_let, sorted(ex_lst, key = second_let), "Testing that sorted_by_second_let has the correct value.") + self.assertEqual(second_let('0123456789'), '1', "Testing that the second_let function returns the second letter in a string.") + self.assertNotIn("lambda", self.getEditorText(), "Checking that you did *not* use a lambda (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    2. Below, we have provided a list of strings called nums. Write a function called last_char that takes a string as input, and returns only its last character. Use this function to sort the list nums by the last digit of each number, from highest to lowest, and save this as a new list called nums_sorted.

    +
    + + +nums = ['1450', '33', '871', '19', '14378', '32', '1005', '44', '8907', '16'] + +def last_char(): + +nums_sorted = + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testA(self): + self.assertEqual(nums_sorted, ['19', '14378', '8907', '16', '1005', '44', '33', '32', '871', '1450'], "Testing that nums_sorted was created correctly.") + def testB(self): + self.assertEqual(last_char('pants'), 's', "Testing the function last_char on input 'pants'.") + + +myTests().main() + + +
    + + +

    3. Once again, sort the list nums based on the last digit of each number from highest to lowest. However, now you should do so by writing a lambda function. Save the new list as nums_sorted_lambda.

    +
    + + +nums = ['1450', '33', '871', '19', '14378', '32', '1005', '44', '8907', '16'] + +nums_sorted_lambda = + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testA(self): + self.assertEqual(nums_sorted_lambda, ['19', '14378', '8907', '16', '1005', '44', '33', '32', '871', '1450'], "Testing that nums_sorted_lambda was created correctly.") + self.assertIn("lambda", self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + + +myTests().main() + + +
    +
    diff --git a/pretext/Sorting/Optionalreverseparameter.ptx b/pretext/Sorting/Optionalreverseparameter.ptx new file mode 100644 index 00000000..84e6f40d --- /dev/null +++ b/pretext/Sorting/Optionalreverseparameter.ptx @@ -0,0 +1,43 @@ + +
    + Optional reverse parameter +

    The sorted function takes some optional parameters (see the Optional Parameters page). The first optional parameter is + a key function, which will be described in the next section. The second optional parameter is a Boolean value which + determines whether to sort the items in reverse order. By default, it is False, but if you set it to True, the list will + be sorted in reverse order.

    + + +L2 = ["Cherry", "Apple", "Blueberry"] +print(sorted(L2, reverse=True)) + + + +

    For most functions, it is possible to provide optional parameters without keywords, but the sorted function + prevents this, so you have to provide keywords for the reverse and key parameters. In this situation, it is + more convenient to use the keyword mechanism anyway.

    +
    +

    + Check Your Understanding +

    + + +

    1. Sort the list, lst from largest to smallest. Save this new list to the variable lst_sorted.

    +
    + + +lst = [3, 5, 1, 6, 7, 2, 9, -2, 5] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(lst_sorted, sorted(lst, reverse=True), "Testing that lst_sorted value is assigned to correct values.") + +myTests().main() + + +
    +
    diff --git a/pretext/Sorting/SecondarySortOrder.ptx b/pretext/Sorting/SecondarySortOrder.ptx new file mode 100644 index 00000000..e920e0a1 --- /dev/null +++ b/pretext/Sorting/SecondarySortOrder.ptx @@ -0,0 +1,161 @@ + +
    + Breaking Ties: Second Sorting +

    What happens when two items are tied in the sort order? For example, suppose we sort a list of words by their lengths. + Which five letter word will appear first?

    +

    The answer is that the python interpreter will sort the tied items in the same order they were in before the sorting.

    +

    What if we wanted to sort them by some other property, say alphabetically, when the words were the same length? Python allows us to specify multiple conditions when we perform a sort by returning a tuple from a key function.

    +

    First, let's see how python sorts tuples. We've already seen that there's a built-in sort order, if we don't specify any key function. For numbers, it's lowest to highest. For strings, it's alphabetic order. For a sequence of tuples, the default sort order is based on the default sort order for the first elements of the tuples, with ties being broken by the second elements, and then third elements if necessary, etc. For example,

    + + +tups = [('A', 3, 2), + ('C', 1, 4), + ('B', 3, 1), + ('A', 2, 4), + ('C', 1, 2)] +for tup in sorted(tups): + print(tup) + + +

    In the code below, we are going to sort a list of fruit words first by their length, smallest to largest, and then alphabetically to break ties among words of the same length. To do that, we have the key function return a tuple whose first element is the length of the fruit's name, and second element is the fruit name itself.

    + + +fruits = ['peach', 'kiwi', 'apple', 'blueberry', 'papaya', 'mango', 'pear'] +new_order = sorted(fruits, key=lambda fruit_name: (len(fruit_name), fruit_name)) +for fruit in new_order: + print(fruit) + + +

    Here, each word is evaluated first on it's length, then by its alphabetical order. Note that we could continue to specify other conditions by including more elements in the tuple.

    +

    What would happen though if we wanted to sort it by largest to smallest, and then by alphabetical order?

    + + +fruits = ['peach', 'kiwi', 'apple', 'blueberry', 'papaya', 'mango', 'pear'] +new_order = sorted(fruits, key=lambda fruit_name: (len(fruit_name), fruit_name), reverse=True) +for fruit in new_order: + print(fruit) + + +

    Do you see a problem here? Not only does it sort the words from largest to smallest, but also in reverse alphabetical order! Can you think of any ways you can solve this issue?

    +

    One solution is to add a negative sign in front of len(fruit_name), which will convert all positive numbers to negative, and all negative numbers to positive. As a result, the longest elements would be first and the shortest elements would be last.

    + + +fruits = ['peach', 'kiwi', 'apple', 'blueberry', 'papaya', 'mango', 'pear'] +new_order = sorted(fruits, key=lambda fruit_name: (-len(fruit_name), fruit_name)) +for fruit in new_order: + print(fruit) + + +

    We can use this for any numerical value that we want to sort, however this will not work for strings.

    +

    + Check Your Understanding +

    + + +

    What will the sorted function sort by?

    + + +weather = {'Reykjavik': {'temp':60, 'condition': 'rainy'}, + 'Buenos Aires': {'temp': 55, 'condition': 'cloudy'}, + 'Cairo': {'temp': 96, 'condition': 'sunny'}, + 'Berlin': {'temp': 89, 'condition': 'sunny'}, + 'Caloocan': {'temp': 78, 'condition': 'sunny'}} + +sorted_weather = sorted(weather, key=lambda w: (w, weather[w]['temp'])) + + +
    + + + +

    first city name (alphabetically), then temperature (lowest to highest)

    +
    + +

    Correct! First we sort alphabetically by city name, then by the temperature, from lowest to highest.

    +
    +
    + + +

    first temperature (highest to lowest), then city name (alphabetically)

    +
    + +

    The order of the tuple matters. The first item in the tuple is the first condition used to sort.

    +
    +
    + + +

    first city name (alphabetically), then temperature (highest to lowest)

    +
    + +

    Not quite, remember that by default, the sorted function will sort by alphabetical order, or lowest to highest. Is the reverse parameter set to True? Has a negative sign been used in the key parameter?

    +
    +
    + + +

    first temperature (lowest to highest), then city name (alphabetically)

    +
    + +

    The order of the tuple matters. The first item in the tuple is the first condition used to sort.

    +
    +
    +
    +
    + + +

    How will the following data be sorted?

    + + +weather = {'Reykjavik': {'temp':60, 'condition': 'rainy'}, + 'Buenos Aires': {'temp': 55, 'condition': 'cloudy'}, + 'Cairo': {'temp': 96, 'condition': 'sunny'}, + 'Berlin': {'temp': 89, 'condition': 'sunny'}, + 'Caloocan': {'temp': 78, 'condition': 'sunny'}} + +sorted_weather = sorted(weather, key=lambda w: (w, -weather[w]['temp']), reverse=True) + + +
    + + + +

    first city name (reverse alphabetically), then temperature (lowest to highest)

    +
    + +

    Correct! In this case, the reverse parameter will cause the city name to be sorted reverse alphabetically instead of alphabetically, and it will also negate the negative sign in front of the temperature.

    +
    +
    + + +

    first temperature (highest to lowest), then city name (alphabetically)

    +
    + +

    The order of the tuple matters. The first item in the tuple is the first condition used to sort. Also, take note of the reverse parameter - what will it do in this instance?

    +
    +
    + + +

    first city name (reverse alphabetically), then temperature (highest to lowest)

    +
    + +

    Not quite - is the reverse parameter set to True? Has a negative sign been used in the key parameter? What happens when those are both used?

    +
    +
    + + +

    first temperature (lowest to highest), then city name (alphabetically)

    +
    + +

    The order of the tuple matters. The first item in the tuple is the first condition used to sort.

    +
    +
    + + +

    first city name (alphabetically), then temperature (lowest to highest)

    +
    + +

    Not quite, remember that by default, the sorted function will sort by alphabetical order, or lowest to highest. Is the reverse parameter set to True? Has a negative sign been used in the key parameter?

    +
    +
    +
    +
    +
    diff --git a/pretext/Sorting/SortingaDictionary.ptx b/pretext/Sorting/SortingaDictionary.ptx new file mode 100644 index 00000000..66a9016a --- /dev/null +++ b/pretext/Sorting/SortingaDictionary.ptx @@ -0,0 +1,223 @@ + +
    + Sorting a Dictionary +

    Previously, you have used a dictionary to accumulate counts, such as the frequencies of letters or words in a text. + For example, the following code counts the frequencies of different numbers in the list.

    + + +L = ['E', 'F', 'B', 'A', 'D', 'I', 'I', 'C', 'B', 'A', 'D', 'D', 'E', 'D'] + +d = {} +for x in L: + if x in d: + d[x] = d[x] + 1 + else: + d[x] = 1 +for x in d.keys(): + print("{} appears {} times".format(x, d[x])) + + +

    The dictionary's keys are not sorted in any particular order. In fact, you may get a different order of output than + someone else running the same code. We can force the results to be displayed in some fixed ordering, by sorting the keys.

    + + +L = ['E', 'F', 'B', 'A', 'D', 'I', 'I', 'C', 'B', 'A', 'D', 'D', 'E', 'D'] + +d = {} +for x in L: + if x in d: + d[x] = d[x] + 1 + else: + d[x] = 1 +y = sorted(d.keys()) +for k in y: + print("{} appears {} times".format(k, d[k])) + + +

    With a dictionary that's maintaining counts or some other kind of score, we might prefer to get the outputs sorted based + on the count rather than based on the items. The standard way to do that in python is to sort based on a property of the key, in particular its value in the dictionary.

    +

    Here things get a little confusing because we have two different meaning of the word key. One meaning is a key in a dictionary. The other meaning is the parameter name for the function that you pass into the sorted function.

    +

    Remember that the key function always takes as input one item from the sequence and returns a property of the item. In our case, the items to be sorted are the dictionary's keys, so each item is one key from the dictionary. To remind ourselves of that, we've named the parameter in tha lambda expression k. The property of key k that is supposed to be returned is its associated value in the dictionary. Hence, we have the lambda expression lambda k: d[k].

    + + +L = ['E', 'F', 'B', 'A', 'D', 'I', 'I', 'C', 'B', 'A', 'D', 'D', 'E', 'D'] + +d = {} +for x in L: + if x in d: + d[x] = d[x] + 1 + else: + d[x] = 1 + +y = sorted(d.keys(), key=lambda k: d[k], reverse=True) +for k in y: + print("{} appears {} times".format(k, d[k])) + + +

    Here's a version of that using a named function.

    + + +L = ['E', 'F', 'B', 'A', 'D', 'I', 'I', 'C', 'B', 'A', 'D', 'D', 'E', 'D'] + +d = {} +for x in L: + if x in d: + d[x] = d[x] + 1 + else: + d[x] = 1 + +def g(k): + return d[k] + +y =(sorted(d.keys(), key=g, reverse=True)) + +# now loop through the keys +for k in y: + print("{} appears {} times".format(k, d[k])) + + + +

    When we sort the keys, passing a function with key=lambda x: d[x] does not specify to sort the keys of a + dictionary. The lists of keys are passed as the first parameter value in the invocation of sort. The key parameter + provides a function that says how to sort them.

    +
    +

    An experienced programmer would probably not even separate out the sorting step. And + they might take advantage of the fact that when you pass a dictionary to something + that is expecting a list, its the same as passing the list of keys.

    + + +L = ['E', 'F', 'B', 'A', 'D', 'I', 'I', 'C', 'B', 'A', 'D', 'D', 'E', 'D'] + +d = {} +for x in L: + if x in d: + d[x] = d[x] + 1 + else: + d[x] = 1 + +# now loop through the sorted keys +for k in sorted(d, key=lambda k: d[k], reverse=True): + print("{} appears {} times".format(k, d[k])) + + +

    Eventually, you will be able to read code like that and immediately know what it's doing. For now, when you come + across something confusing, like line 11, try breaking it down. The function sorted is invoked. Its first parameter + value is a dictionary, which really means the keys of the dictionary. The second parameter, the key function, decorates + the dictionary key with a post-it note containing that key's value in dictionary d. The last parameter, True, says to + sort in reverse order.

    +

    There is another way to sort dictionaries, by calling .items() to extract a sequence of (key, value) tuples, and then sorting that sequence of tuples. But it's better to learn the pythonic way of doing it, sorting the dictionary keys using a key function that takes one key as input and looks up the value in the dictionary.

    +

    + Check Your Understanding +

    + + +

    Which of the following will sort the keys of d in ascending order of their values (i.e., from lowest to highest)?

    + + +L = [4, 5, 1, 0, 3, 8, 8, 2, 1, 0, 3, 3, 4, 3] + +d = {} +for x in L: + if x in d: + d[x] = d[x] + 1 + else: + d[x] = 1 + +def g(k, d): + return d[k] + +ks = d.keys() + + +
    + + + +

    sorted(ks, key=g)

    +
    + +

    g is a function that takes two parameters. The key function passed to sorted must always take just one parameter.

    +
    +
    + + +

    sorted(ks, key=lambda x: g(x, d))

    +
    + +

    The lambda function takes just one parameter, and calls g with two parameters.

    +
    +
    + + +

    sorted(ks, key=lambda x: d[x])

    +
    + +

    The lambda function looks up the value of x in d.

    +
    +
    +
    +
    + + +

    2. Sort the following dictionary based on the keys so that they are sorted a to z. Assign the resulting value to the variable sorted_keys.

    +
    + + +dictionary = {"Flowers": 10, 'Trees': 20, 'Chairs': 6, "Firepit": 1, 'Grill': 2, 'Lights': 14} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted_keys, sorted(dictionary), "Testing that sorted_keys has the correct value.") + +myTests().main() + + +
    + + +

    3. Below, we have provided the dictionary groceries, whose keys are grocery items, and values are the number of each item that you need to buy at the store. Sort the dictionary's keys into alphabetical order, and save them as a list called grocery_keys_sorted.

    +
    + + +groceries = {'apples': 5, 'pasta': 3, 'carrots': 12, 'orange juice': 2, 'bananas': 8, 'popcorn': 1, 'salsa': 3, 'cereal': 4, 'coffee': 5, 'granola bars': 15, 'onions': 7, 'rice': 1, 'peanut butter': 2, 'spinach': 9} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(grocery_keys_sorted, ['apples', 'bananas', 'carrots', 'cereal', 'coffee', 'granola bars', 'onions', 'orange juice', 'pasta', 'peanut butter', 'popcorn', 'rice', 'salsa', 'spinach'], "Testing that grocery_keys_sorted was created correctly.") + +myTests().main() + + +
    + + +

    4. Sort the following dictionary's keys based on the value from highest to lowest. Assign the resulting value to the variable sorted_values.

    +
    + + +dictionary = {"Flowers": 10, 'Trees': 20, 'Chairs': 6, "Firepit": 1, 'Grill': 2, 'Lights': 14} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted_values, sorted(dictionary, key=lambda x: dictionary[x], reverse = True), "Testing that sorted_values has the correct value.") + +myTests().main() + + +
    +
    diff --git a/pretext/Sorting/WPWhenToUseLambdaVsFunction.ptx b/pretext/Sorting/WPWhenToUseLambdaVsFunction.ptx new file mode 100644 index 00000000..465e5bff --- /dev/null +++ b/pretext/Sorting/WPWhenToUseLambdaVsFunction.ptx @@ -0,0 +1,35 @@ + +
    + 👩‍💻 When to use a Lambda Expression +

    Though you can often use a lambda expression or a named function interchangeably when sorting, it's generally best to use lambda expressions until the process is too complicated, and then a function should be used. For example, in the following examples, we'll be sorting a dictionary's keys by properties of its values. Each key is a state name and each value is a list of city names.

    +

    For our first sort order, we want to sort the states in order by the length of the first city name. Here, it's pretty easy to compute that property. states[state] is the list of cities associated with a particular state. So If state is a list of city strings, len(states[state][0]) is the length of the first city name. Thus, we can use a lambda expression:

    + + +states = {"Minnesota": ["St. Paul", "Minneapolis", "Saint Cloud", "Stillwater"], + "Michigan": ["Ann Arbor", "Traverse City", "Lansing", "Kalamazoo"], + "Washington": ["Seattle", "Tacoma", "Olympia", "Vancouver"]} + +print(sorted(states, key=lambda state: len(states[state][0]))) + + +

    That's already pushing the limits of complex a lambda expression can be before it's reall hard to read (or debug).

    +

    For our second sort order, the property we want to sort by is the number of cities that begin with the letter ‘S'. The function defining this property is harder to express, requiring a filter and count accumulation pattern. So we are better off defining a separate, named function. Here, we've chosen to make a lambda expression that looks up the value associated with the particular state and pass that value to the named function s_cities_count. We could have passed just the key, but then the function would have to look up the value, and it would be a little confusing, from the code, to figure out what dictionary the key is supposed to be looked up in. Here, we've done the lookup right in the lambda expression, which makes it a little bit clearer that we're just sorting the keys of the states dictionary based on a property of their values. It also makes it easier to reuse the counting function on other city lists, even if they aren't embedded in that particular states dictionary.

    + + +def s_cities_count(city_list): + ct = 0 + for city in city_list: + if city[0] == "S": + ct += 1 + return ct + +states = {"Minnesota": ["St. Paul", "Minneapolis", "Saint Cloud", "Stillwater"], + "Michigan": ["Ann Arbor", "Traverse City", "Lansing", "Kalamazoo"], + "Washington": ["Seattle", "Tacoma", "Olympia", "Vancouver"]} + +print(sorted(states, key=lambda state: s_cities_count(states[state]))) + + +

    At this point in the course, we don't even know how to do such a filter and accumulation as part of a lambda expression. There is a way, using something called list comprehensions, but we haven't covered that yet.

    +

    There will be other situations that are even more complicated than this. In some cases, they may be too complicated to solve with a lambda expression at all! You can always fall back on writing a named function when a lambda expression will be too complicated.

    +
    diff --git a/pretext/Sorting/intro-SortingwithSortandSorted.ptx b/pretext/Sorting/intro-SortingwithSortandSorted.ptx new file mode 100644 index 00000000..47008758 --- /dev/null +++ b/pretext/Sorting/intro-SortingwithSortandSorted.ptx @@ -0,0 +1,42 @@ + +
    + Introduction: Sorting with Sort and Sorted +

    When we first introduced lists, we noted the existence of a method sort. When invoked on a list, the + order of items in the list is changed. If no optional parameters are specified, the items are arranged in + whatever the natural ordering is for the item type. For example, if the items are all integers, then + smaller numbers go earlier in the list. If the items are all strings, they are arranged in alphabetic order.

    + + +L1 = [1, 7, 4, -2, 3] +L2 = ["Cherry", "Apple", "Blueberry"] + +L1.sort() +print(L1) +L2.sort() +print(L2) + + +

    Note that the sort method does not return a sorted version of the list. In fact, it + returns the value None. But the list itself has been modified. This kind of operation + that works by having a side effect on the list can be quite confusing.

    +

    In this course, we will generally use an alternative way of sorting, the function sorted rather than + the method sort. Because it is a function rather than a method, it is invoked on a list by passing the + list as a parameter inside the parentheses, rather than putting the list before the period. More importantly, + sorted does not change the original list. Instead, it returns a new list.

    + + +L2 = ["Cherry", "Apple", "Blueberry"] + +L3 = sorted(L2) +print(L3) +print(sorted(L2)) +print(L2) # unchanged + +print("----") + +L2.sort() +print(L2) +print(L2.sort()) #return value is None + + +
    diff --git a/pretext/Sorting/toctree.ptx b/pretext/Sorting/toctree.ptx new file mode 100644 index 00000000..075732fa --- /dev/null +++ b/pretext/Sorting/toctree.ptx @@ -0,0 +1,13 @@ + + + Sorting + + + + + + + + + + diff --git a/pretext/TestCases/ChapterAssessment.ptx b/pretext/TestCases/ChapterAssessment.ptx new file mode 100644 index 00000000..e6efa180 --- /dev/null +++ b/pretext/TestCases/ChapterAssessment.ptx @@ -0,0 +1,220 @@ + +
    + Chapter Assessment + + +

    The function mySum is supposed to return the sum of a list of numbers (and 0 if that list is empty), but it has one or more errors in it. Use this space to write test cases to determine what errors there are. You will be using this information to answer the next set of multiple choice questions.

    +
    + + + + + +
    + + +

    Which of the following cases fail for the mySum function?

    +
    + + + +

    an empty list

    +
    + +

    Correct, 0 is not returned if the function is given an empty list.

    +
    +
    + + +

    a list with one item

    +
    + +

    Incorrect, a list with one item returns the correct value.

    +
    +
    + + +

    a list with more than one item

    +
    + +

    Correct, a list with more than one item does not provide the correct response.

    +
    +
    +
    +
    + + +

    Are there any other cases, that we can determine based on the current structure of the function, that also fail for the mySum function?

    +
    + + + +

    Yes

    +
    + +

    Incorrect. Though it is possible that the function could have more issues, we can't tell if other cases would fail (such as combining integers and floats) due to the current issues.

    +
    +
    + + +

    No

    +
    + +

    Correct. At the moment we can't tell if other cases would fail (such as combining integers and floats), but it is possible that the function could have more issues once the current issues are fixed.

    +
    +
    +
    +
    + + +
    +
  • + The class Student is supposed to accept two arguments in its constructor: +

    +

      +
    1. +

      A name string

      +
    2. +
    3. +

      An optional integer representing the number of years the student has been at Michigan (default:1)

      +
    4. +
    +

    +
  • +
  • + Every student has three instance variables: +

    +

      +
    1. +

      self.name (set to the name provided)

      +
    2. +
    3. +

      self.years_UM (set to the number of years the student has been at Michigan)

      +
    4. +
    5. +

      self.knowledge (initialized to 0)

      +
    6. +
    +

    +
  • +
  • + There are three methods: +

    +

      +
    • +

      .study() should increase self.knowledge by 1 and return None

      +
    • +
    • +

      .getKnowledge() should return the value of self.knowledge

      +
    • +
    • +

      .year_at_umich() should return the value of self.years_UM

      +
    • +
    +

    +
  • +
    +

    There are one or more errors in the class. Use this space to write test cases to determine what errors there are. You will be using this information to answer the next set of multiple choice questions.

    +
    + + + + + +
    + + +

    Which of the following cases fail for the Student class?

    +
    + + + +

    the method study does not return None

    +
    + +

    Incorrect, the method study does return None.

    +
    +
    + + +

    the optional integer in the constructor is not optional

    +
    + +

    Incorrect, the integer for number of years is optional.

    +
    +
    + + +

    the attributes/instance variables are not correctly assigned in the constructor

    +
    + +

    Correct! The constructor does not actually use the optional integer that is provided. Instead it sticks with using the default value.

    +
    +
    + + +

    the method study does not increase self.knowledge

    +
    + +

    Correct! Study does not increase the self.knowledge.

    +
    +
    + + +

    the method year_at_umich does not return the value of self.years_UM

    +
    + +

    Incorrect, year_at_umich does return the value assigned to self.years_UM.

    +
    +
    +
    +
    + + +

    Are there any other cases, that we can determine based on the current structure of the class, that also fail for the Student class?

    +
    + + + +

    Yes

    +
    + +

    Correct! There is an issue with the getKnowledge method because it returns None when self.knowledge is 0, even though it returns the correct value when self.knowledge is non-zero.

    +
    +
    + + +

    No

    +
    + +

    Incorrect, there are more cases that fail. Try finding those other cases!

    +
    +
    +
    +
    + + +def lr(n): return list(range(n)) + +# THESE FUNCTIONS ARE INTENTIONALLY OBFUSCATED +# PLEASE TRY TO WRITE TESTS FOR THEM RATHER THAN +# READING THEM. +def mySum(a): + if type(a) is type(''.join([][:])): return a[lr(1)[0]] + mySum(a[1:]) + elif len(a)==len(lr(1)+[]): return a[lr(1)[0]] + else: return None and a[lr(1)[0]] + mySum(a[1:]) + + +# THESE FUNCTIONS ARE INTENTIONALLY OBFUSCATED +# PLEASE TRY TO WRITE TESTS FOR THEM RATHER THAN +# READING THEM. +class Student(): + def __init__(s,a,b=1): s.name,s.years_UM,s.knowledge = ''*200+a+''*100,1,len(lr(0)) + len([]) + def study(s): + for _ in lr(s.knowledge): s.knowledge = s.knowledge + 1 + def getKnowledge(s): + for i in lr(s.knowledge): return s.knowledge + def year_at_umich(s): return s.years_UM + + +
    diff --git a/pretext/TestCases/CheckingOtherAssumptions.ptx b/pretext/TestCases/CheckingOtherAssumptions.ptx new file mode 100644 index 00000000..98ad3b5a --- /dev/null +++ b/pretext/TestCases/CheckingOtherAssumptions.ptx @@ -0,0 +1,12 @@ + +
    + Checking Other Assumptions +

    We can also check other assumptions about the values of variables, in addition to their types. For example, we could check that a list has fewer than 10 items.

    + + +lst = ['a', 'b', 'c'] + +assert len(lst) < 10 + + +
    diff --git a/pretext/TestCases/Exercises.ptx b/pretext/TestCases/Exercises.ptx new file mode 100644 index 00000000..1b5160e1 --- /dev/null +++ b/pretext/TestCases/Exercises.ptx @@ -0,0 +1,13 @@ + + + Exercises +

    There may be exercises below contributed by professors using Runestone.

    + + Contributed Exercises + {% for q in questions: %} + <div class='oneq full-width'> + {{ q['htmlsrc']|safe }} + </div> +{% endfor %} + +
    diff --git a/pretext/TestCases/Glossary.ptx b/pretext/TestCases/Glossary.ptx new file mode 100644 index 00000000..fb76ccf7 --- /dev/null +++ b/pretext/TestCases/Glossary.ptx @@ -0,0 +1,19 @@ + +
    + Glossary + + + return value test +

    A return value test invokes a function on a particular set of inputs and checks whether the return value is the correct one for those inputs.

    +
    + + side effect test +

    A side effect test invokes a function or method and then checks whether some object's contents were suitably transformed by the end of the execution of the function or method.

    +
    + + test case +

    An assertion about the state of the program at particular point in its + execution, such as the type of a variable or of a value returned by a function.

    +
    +
    +
    diff --git a/pretext/TestCases/TestingConditionals.ptx b/pretext/TestCases/TestingConditionals.ptx new file mode 100644 index 00000000..28b1bdc0 --- /dev/null +++ b/pretext/TestCases/TestingConditionals.ptx @@ -0,0 +1,34 @@ + +
    + Testing Conditionals +

    Ideally, you want tests that will cover both the typical execution of your program and tests for unusual things that might happen, which are called edge cases.

    +

    If the code has conditional blocks (if..elif..else) then you'll want to have tests that check that the right block executes when you expect it to. For example, in the code below, z is set to the smaller of x and y, but if they are equal then we set z to 0. Our code even includes a comment to help us keep track of when we think the final code block should execute.

    + + +if x < y: + z = x +else: + if x > y: + z = y + else: + ## x must be equal to y + z = 0 + + +

    When you start to have complex conditionals, it's helpful to add comments like that, and once you do you might as well add an assert statement. If the assert ever causes an error, you'll be grateful to know right away that something has gone wrong and you'll have a good start on where to look for debugging. In this case, you'll never get an error, no matter the values of x and y.

    + + +x = 3 +y = 4 +if x < y: + z = x +else: + if x > y: + z = y + else: + ## x must be equal to y + assert x==y + z = 0 + + +
    diff --git a/pretext/TestCases/TestingLoops.ptx b/pretext/TestCases/TestingLoops.ptx new file mode 100644 index 00000000..9ed850c0 --- /dev/null +++ b/pretext/TestCases/TestingLoops.ptx @@ -0,0 +1,42 @@ + +
    + Testing Loops +

    With a for loop, the edge cases might include iterating over an empty list or string, or iterating over a list with different kinds of contents.

    +

    For example, suppose we have a code snippet that is supposed to accumulate the sum of all the numbers in a list, lst, whose value was set sometime before this code snippet is run. If you've already learned how to define functions, you can imagine this code snippet inside a function definition.

    +

    When lst is [1, 5, 8], the value at the end should be 14.

    + + +nums = [1, 5, 8] + +accum = 0 +for w in nums: + accum = accum + w +assert accum == 14 + + +

    But what about when lst is an empty list? Maybe we want to assert that the value should be 0, in which case our current accumulation works fine. But suppose we wanted it to be some other value, perhaps the special python value None. By writing an assert statement, we can be alerted that our code doesn't produce the answer we wanted…

    + + +nums = [] + +accum = 0 +for w in nums: + accum = accum + w +assert accum == None + + +

    …and then we can fix our accumulator code

    + + +nums = [] + +if len(nums) == 0: + accum = None +else: + accum = 0 + for w in nums: + accum = accum + w +assert accum == None + + +
    diff --git a/pretext/TestCases/TestingOptionalParameters.ptx b/pretext/TestCases/TestingOptionalParameters.ptx new file mode 100644 index 00000000..fbf3906f --- /dev/null +++ b/pretext/TestCases/TestingOptionalParameters.ptx @@ -0,0 +1,33 @@ + +
    + Testing Optional Parameters +

    If a function takes an optional parameter, one of the edge cases to test for is when no parameter value is supplied during execution. That will test whether the default value is being set correctly when the parameter is omitted.

    +

    Consider the following function, which counts the number of long enough words in a list. What counts as long enough is determined by an optional parameter, min_length.

    + + +def count_long_words(words, min_length=5): + ct = 0 + for word in words: + if len(word) >= min_length: + ct += 1 + return ct + + +

    What return value tests could we write to check whether it is implemented correctly? First, we could construct a list of words that has words of many lengths, including a degenerate empty string that has length 0. One return value test would omit min_length and check that we got the right count. Other return value tests would supply min_length and would include the edge case where min_length is 0 and one where it is very large.

    + + +def count_long_words(words, min_length=5): + ct = 0 + for word in words: + if len(word) >= min_length: + ct += 1 + return ct + +test_words = ["", "1", "12", "123", "1234", "12345", "123456"] +assert count_long_words(test_words) == 2 +assert count_long_words(test_words, min_length=0) == 7 +assert count_long_words(test_words, min_length=4) == 3 +assert count_long_words(test_words, min_length=100) == 0 + + +
    diff --git a/pretext/TestCases/TestingTypes.ptx b/pretext/TestCases/TestingTypes.ptx new file mode 100644 index 00000000..41a8ab89 --- /dev/null +++ b/pretext/TestCases/TestingTypes.ptx @@ -0,0 +1,28 @@ + +
    + Checking Assumptions About Data Types +

    Unlike some other programming languages, the python interpreter does not enforce restrictions about the data types of objects that can be bound to particular variables. For example, in java, before assigning a value to a variable, the program would include a declaration of what type of value (integer, float, Boolean, etc.) that the variable is allowed to hold. The variable x in a python program can be bound to an integer at one point and to a list at some other point in the program execution.

    +

    That flexibility makes it easier to get started with programming in python. Sometimes, however, type checking could alert us that something has gone wrong in our program execution. If we are assuming at that x is a list, but it's actually an integer, then at some point later in the program execution, there will probably be an error. We can add assert statements that will cause an error to be flagged sooner rather than later, which might make it a lot easier to debug.

    +

    In the code below, we explicitly state some natural assumptions about how truncated division might work in python. It turns out that the second asumption is wrong: 9.0//5 produces 2.0, a floating point value!

    + + +assert type(9//5) == int +assert type(9.0//5) == int + + +

    In the code below, lst is bound to a list object. In python, not all the elements of a list have to be of the same type. We can check that they all have the same type and get an error if they are not. Notice that with lst2, one of the assertions fails.

    + + +lst = ['a', 'b', 'c'] + +first_type = type(lst[0]) +for item in lst: + assert type(item) == first_type + +lst2 = ['a', 'b', 'c', 17] +first_type = type(lst2[0]) +for item in lst2: + assert type(item) == first_type + + +
    diff --git a/pretext/TestCases/Testingfunctions.ptx b/pretext/TestCases/Testingfunctions.ptx new file mode 100644 index 00000000..910e13de --- /dev/null +++ b/pretext/TestCases/Testingfunctions.ptx @@ -0,0 +1,138 @@ + +
    + Writing Test Cases for Functions +

    It is a good idea to write one or more test cases for each function that you define.

    +

    A function defines an operation that can be performed. If the function takes one or more parameters, it is supposed to + work properly on a variety of possible inputs. Each test case will check whether the function works properly on + one set of possible inputs.

    +

    A useful function will do some combination of three things, given its input parameters:

    +

    +

      +
    • +

      Return a value. For these, you will write return value tests.

      +
    • +
    • +

      Modify the contents of some mutable object, like a list or dictionary. For these you will write side effect tests.

      +
    • +
    • +

      Print something or write something to a file. Tests of whether a function generates the right printed output are beyond the scope of this testing framework; you won't write these tests.

      +
    • +
    +

    + + Return Value Tests +

    Testing whether a function returns the correct value is the easiest test case to define. You simply check whether the + result of invoking the function on a particular input produces the particular output that you expect. If f is your + function, and you think that it should transform inputs x and y into output z, then you could write a test as + assert f(x, y) == z. Or, to give a more concrete example, if you have a function square, you could have + a test case assert square(3) == 9. Call this a return value test.

    +

    Because each test checks whether a function works properly on specific inputs, the test cases will never be complete: in + principle, a function might work properly on all the inputs that are tested in the test cases, but still not work + properly on some other inputs. That's where the art of defining test cases comes in: you try to find specific inputs that + are representative of all the important kinds of inputs that might ever be passed to the function.

    +

    The first test case that you define for a function should be an easy case, one that is prototypical of the kinds of + inputs the function is supposed to handle. Additional test cases should handle extreme or unusual inputs, sometimes + called edge cases. For example, if you are defining the square function, the first, easy case, might be an input + like 3. Additional extreme or unusual inputs around which you create test cases might be a negative number, 0, and a + floating point number.

    +

    One way to think about how to generate edge cases is to think in terms of equivalence classes of the different kinds of inputs the function might get. For example, the input to the square function could be either positive or negative. We then choose an input from each of these classes. + It is important to have at least one test for each equivalence class of inputs.

    +

    Semantic errors are often caused by improperly handling the boundaries between equivalence classes. The boundary for this + problem is zero. It is important to have a test at each boundary.

    +

    Another way to think about edge cases is to imagine things that could go wrong in the implementation. For example, in the square function we might mistakenly use addition instead of multiplication. Thus, we shouldn't rely on a test that uses 2 as input, but we might be fooled into thinking it was working when it produced an output of 4, when it was really doubling rather than squaring.

    +

    Try adding one or two more test cases for the square function in the code below, based on the suggestions for edge cases.

    + + +def square(x): + return x*x + +assert square(3) == 9 + + +
    + + Side Effect Tests +

    To test whether a function makes correct changes to a mutable object, you will need more than one line of code. You will + first set the mutable object to some value, then run the function, then check whether the object has the expected value. + Call this a side effect test because you are checking to see whether the function invocation has had the correct side + effect on the mutable object.

    +

    An example follows, testing the update_counts function (which is deliberately implemented incorrectly…). This + function takes a string called letters and updates the counts in counts_d that are associated with each + character in the string. To do a side effect test, we first create a dictionary with initial counts for some letters. + Then we invoke the function. Then we test that the dictionary has the correct counts for some letters (those correct + counts are computed manually when we write the test. We have to know what the correct answer should be in order to write + a test). You can think of it like writing a small exam for your code – we would not give you an exam without knowing the + answers ourselves.

    + + +def update_counts(letters, counts_d): + for c in letters: + counts_d[c] = 1 + if c in counts_d: + counts_d[c] = counts_d[c] + 1 + + +counts = {'a': 3, 'b': 2} +update_counts("aaab", counts) +# 3 more occurrences of a, so 6 in all +assert counts['a'] == 6 +# 1 more occurrence of b, so 3 in all +assert counts['b'] == 3 + + + + +

    If you write a complete set of tests and a function passes all the tests, you can be sure that it's working correctly.

    +
    + + + +

    True

    +
    + +

    No matter how many tests you write, there may be some input that you didn't test, and the function could do the wrong thing on that input.

    +
    +
    + + +

    False

    +
    + +

    The tests should cover as many edge cases as you can think of, but there's always a possibility that the function does badly on some input that you didn't include as a test case.

    +
    +
    +
    +
    + + +

    For the hangman game, the blanked function takes a word and some letters that have been guessed, and returns a version of the word with _ for all the letters that haven't been guessed. Which of the following is the correct way to write a test to check that ‘under' will be blanked as 'u_d__' when the user has guessed letters d and u so far?

    +
    + + + +

    assert blanked('under', 'du', 'u_d__') == True

    +
    + +

    blanked only takes two inputs; this provides three inputs to the blanked function

    +
    +
    + + +

    assert blanked('under', 'u_d__') == 'du'

    +
    + +

    The second argument to the blanked function should be the letters that have been guessed, not the blanked version of the word

    +
    +
    + + +

    assert blanked('under', 'du') == 'u_d__'

    +
    + +

    This checks whether the value returned from the blanked function is 'u_d__'.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/TestCases/WPProgramDevelopment.ptx b/pretext/TestCases/WPProgramDevelopment.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/TestCases/WPProgramDevelopment.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/TestCases/intro-TestCases.ptx b/pretext/TestCases/intro-TestCases.ptx new file mode 100644 index 00000000..05fb1102 --- /dev/null +++ b/pretext/TestCases/intro-TestCases.ptx @@ -0,0 +1,164 @@ + +
    + Introduction: Test Cases +

    A test case expresses requirements for a program, in a way that can be checked automatically. Specifically, a test + asserts something about the state of the program at a particular point in its execution.

    +

    We have previously suggested that it's a good idea to first write down comments about what your code is supposed to do, + before actually writing the code. It is an even better idea to write down some test cases before writing a program.

    +

    There are several reasons why it's a good habit to write test cases.

    +

    +

      +
    • +

      Before we write code, we have in mind what it should do, but those thoughts may be a little vague. Writing down test cases forces us to be more concrete about what should happen.

      +
    • +
    • +

      As we write the code, the test cases can provide automated feedback. You've actually been the beneficiary of such automated feedback via test cases throughout this book in some of the activecode windows and almost all of the exercises. We wrote the code for those test cases but kept it hidden, so as not to confuse you and also to avoid giving away the answers. You can get some of the same benefit from writing your own test cases.

      +
    • +
    • +

      In larger software projects, the set of test cases can be run every time a change is made to the code base. Unit tests check that small bits of code are correctly implemented. Functional tests check that larger chunks of code work correctly. Running the tests can help to identify situations where a change in code in one place breaks the correct operation of some other code. We won't see that advantage of test cases in this textbook, but keep in mind that this introduction to test cases is setting the stage for an essential software engineering practice if you are participating in a larger software development project.

      +
    • +
    +

    +

    Now it's time to learn how to write code for test cases.

    +

    Python provides a statement called assert.

    +

    +

      +
    • +

      Following the word assert there will be a python expression.

      +
    • +
    • +

      If that expression evaluates to the Boolean False, then the interpreter will raise a runtime error.

      +
    • +
    • +

      If the expression evaluates to True, then nothing happens and the execution goes on to the next line of code.

      +
    • +
    +

    +

    Why would you ever want to write a line of code that can never compute anything useful for you, but sometimes causes a runtime error? For all the reasons we described above about the value of automated tests. You want a test that will alert that you that some condition you assumed was true is not in fact true. It's much better to be alerted to that fact right away than to have some unexpected result much later in your program execution, which you will have trouble tracing to the place where you had an error in your code.

    +

    Why doesn't assert print out something saying that the test passed? The reason is that you don't want to clutter up your output window with the results of automated tests that pass. You just want to know when one of your tests fails. In larger projects, other testing harnesses are used instead of assert, such as the python unittest module. Those provide some output summarizing tests that have passed as well as those that failed. In this textbook, we will just use simple assert statements for automated tests.

    +

    To write a test, we must know what we expect some value to be at a particular point in the program's execution. In the rest of the chapter, we'll see some examples of assert statements and ideas for what kinds of assertions one might want to add in one's programs.

    + +

    A note to instructors: this chapter is deliberately structured so that you can introduce testing early in the course if you want to. You will need to cover chapter 8, on Conditionals, before starting this chapter, because that chapter covers Booleans. The subchapters on testing types and testing conditionals can be covered right after that. The subchapter on testing functions can be delayed until after you have covered function definition.

    +
    +

    + Check your understanding +

    + + +

    When assert x==y is executed and x and y have different values, what will happen?

    +
    + + + +

    A runtime error will occur

    +
    + +

    The expression ``x==y`` evaluates to ``False``, so a runtime error will occur

    +
    +
    + + +

    A message is printed out saying that the test failed.

    +
    + +

    If the assertion fails, a runtime error will occur

    +
    +
    + + +

    x will get the value that y currently has

    +
    + +

    ``x==y`` is a Boolean expression, not an assignment statement

    +
    +
    + + +

    Nothing will happen

    +
    + +

    The expression ``x==y`` evaluates to ``False``

    +
    +
    + + +

    A message is printed out saying that the test passed.

    +
    + +

    When an assertion test passes, no message is printed. In this case, the assertion test fails.

    +
    +
    +
    +
    + + +

    When assert x==y is executed and x and y have the same values, what will happen?

    +
    + + + +

    A runtime error will occur

    +
    + +

    The expression ``x==y`` evaluates to ``True``

    +
    +
    + + +

    A message is printed out saying that the test failed.

    +
    + +

    The expression ``x==y`` evaluates to ``True``

    +
    +
    + + +

    x will get the value that y currently has

    +
    + +

    ``x==y`` is a Boolean expression, not an assignment statement

    +
    +
    + + +

    Nothing will happen

    +
    + +

    The expression ``x==y`` evaluates to ``True``

    +
    +
    + + +

    A message is printed out saying that the test passed.

    +
    + +

    When an assertion test passes, no message is printed.

    +
    +
    +
    +
    + + +

    Test cases are a waste of time, because the python interpreter will give an error + message when the program runs incorrectly, and that's all you need for debugging.

    +
    + + + +

    True

    +
    + +

    You might not notice the error, if the code just produces a wrong output rather generating an error. And it may be difficult to figure out the original cause of an error when you do get one.

    +
    +
    + + +

    False

    +
    + +

    Test cases let you test some pieces of code as you write them, rather than waiting for problems to show themselves later.

    +
    +
    +
    +
    +
    diff --git a/pretext/TestCases/toctree.ptx b/pretext/TestCases/toctree.ptx new file mode 100644 index 00000000..6eb47d89 --- /dev/null +++ b/pretext/TestCases/toctree.ptx @@ -0,0 +1,15 @@ + + + Test Cases + + + + + + + + + + + + diff --git a/pretext/TransformingSequences/Aliasing.ptx b/pretext/TransformingSequences/Aliasing.ptx new file mode 100644 index 00000000..fb91a456 --- /dev/null +++ b/pretext/TransformingSequences/Aliasing.ptx @@ -0,0 +1,117 @@ + +
    + Aliasing +

    Since variables refer to objects, if we assign one variable to another, both + variables refer to the same object:

    + + +a = [81, 82, 83] +b = a +print(a is b) + + +

    In this case, the reference diagram looks like this:

    + State snapshot for multiple references (aliases) to a list +

    Because the same list has two different names, a and b, we say that it + is aliased. Changes made with one alias affect the other. In the codelens example below, you can see that a and b refer + to the same list after executing the assignment statement b = a.

    + + +a = [81,82,83] +b = [81,82,83] +print(a is b) + +b = a +print(a == b) +print(a is b) + +b[0] = 5 +print(a) + + +

    Although this behavior can be useful, it is sometimes unexpected or + undesirable. In general, it is safer to avoid aliasing when you are working + with mutable objects. Of course, for immutable objects, there's no problem. + That's why Python is free to alias strings and integers when it sees an opportunity to + economize.

    +

    + Check your understanding +

    + + +

    What is the value of y after the following code has been evaluated:

    + + +w = ['Jamboree', 'get-together', 'party'] +y = ['celebration'] +y = w + + +
    + + + +

    ['Jamboree', 'get-together', 'party']

    +
    + +

    Yes, the value of y has been reassigned to the value of w.

    +
    +
    + + +

    ['celebration']

    +
    + +

    No, that was the inital value of y, but y has changed.

    +
    +
    + + +

    ['celebration', 'Jamboree', 'get-together', 'party']

    +
    + +

    No, when we assign a list to another list it does not concatenate the lists together.

    +
    +
    + + +

    ['Jamboree', 'get-together', 'party', 'celebration']

    +
    + +

    No, when we assign a list to another list it does not concatenate the lists together.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +alist = [4,2,8,6,5] +blist = alist +blist[3] = 999 +print(alist) + + +
    + + + +

    [4,2,8,6,5]

    +
    + +

    blist is not a copy of alist, it is a reference to the list alist refers to.

    +
    +
    + + +

    [4,2,8,999,5]

    +
    + +

    Yes, since alist and blist both reference the same list, changes to one also change the other.

    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/AppendversusConcatenate.ptx b/pretext/TransformingSequences/AppendversusConcatenate.ptx new file mode 100644 index 00000000..7f561ef2 --- /dev/null +++ b/pretext/TransformingSequences/AppendversusConcatenate.ptx @@ -0,0 +1,143 @@ + +
    + Append versus Concatenate +

    The append method adds a new item to the end of a list. It is also possible to add a new item to the end of a list + by using the concatenation operator. However, you need to be careful.

    +

    Consider the following example. The original list has 3 integers. We want to add the word cat to the end of the list.

    + + +origlist = [45,32,88] + +origlist.append("cat") + + +

    Here we have used append which simply modifies the list. In order to use concatenation, we need to + write an assignment statement that uses the accumulator pattern:

    +
    origlist = origlist + ["cat"]
    +

    Note that the word cat needs to be placed in a list since the concatenation operator needs two lists + to do its work.

    + + +origlist = [45,32,88] + +origlist = origlist + ["cat"] + + +

    It is also important to realize that with append, the original list is simply modified. On the other hand, + with concatenation, an entirely new list is created. This can be seen in the following codelens example + where``newlist`` refers to a list which is a copy of the original list, origlist, with the new item + cat added to the end. origlist still contains the three values it did before the concatenation. + This is why the assignment operation is necessary as part of the accumulator pattern.

    + + +origlist = [45,32,88] + +newlist = origlist + ["cat"] + + +

    This might be difficult to understand since these two lists appear to be the same. In Python, every object + has a unique identification tag. Likewise, there is a built-in function that can be called on any object to return + its unique id. The function is appropriately called id and takes a single parameter, the object that you are + interested in knowing about. You can see in the example below that a real id is usually a very large integer value + (corresponding to an address in memory). In the textbook though the number will likely be smaller.

    + + +>>> alist = [4, 5, 6] +>>> id(alist) +4300840544 +>>> + + + + +origlist = [45,32,88] +print("origlist:", origlist) +print("the identifier:", id(origlist)) #id of the list before changes +newlist = origlist + ['cat'] +print("newlist:", newlist) +print("the identifier:", id(newlist)) #id of the list after concatentation +origlist.append('cat') +print("origlist:", origlist) +print("the identifier:", id(origlist)) #id of the list after append is used + + +

    Note how even though newlist and origlist appear the same, they have different identifiers.

    +

    We have previously described x += 1 as a shorthand for x = x + 1. With lists, += is actually a little different. In particular, origlist += [cat] appends cat to the end of the original list object. If there is another alias for `origlist, this can make a difference, as in the code below. See if you can follow (or, better yet, predict, changes in the reference diagram).

    + + +origlist = [45,32,88] +aliaslist = origlist +origlist += ["cat"] +origlist = origlist + ["cow"] + + +

    We can use append or concatenate repeatedly to create new objects. If we had a string and wanted to make a new list, where each element in the list is a character in the string, where do you think you should start? In both cases, you'll need to first create a variable to store the new object.

    + + +st = "Warmth" +a = [] + + +

    Then, character by character, you can add to the empty list. The process looks different if you concatentate as compared to using append.

    + + +st = "Warmth" +a = [] +b = a + [st[0]] +c = b + [st[1]] +d = c + [st[2]] +e = d + [st[3]] +f = e + [st[4]] +g = f + [st[5]] +print(g) + + + + +st = "Warmth" +a = [] +a.append(st[0]) +a.append(st[1]) +a.append(st[2]) +a.append(st[3]) +a.append(st[4]) +a.append(st[5]) +print(a) + + +

    This might become tedious though, and difficult if the length of the string is long. + Can you think of a better way to do this?

    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +alist = [4,2,8,6,5] +alist = alist + 999 +print(alist) + + +
    + + + +

    [4,2,8,6,5,999]

    +
    + +

    You cannot concatenate a list with an integer.

    +
    +
    + + +

    Error, you cannot concatenate a list with an integer.

    +
    + +

    Yes, in order to perform concatenation you would need to write alist+[999]. You must have two lists.

    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/CloningLists.ptx b/pretext/TransformingSequences/CloningLists.ptx new file mode 100644 index 00000000..6536bbdf --- /dev/null +++ b/pretext/TransformingSequences/CloningLists.ptx @@ -0,0 +1,68 @@ + +
    + Cloning Lists +

    If we want to modify a list and also keep a copy of the original, we need to be + able to make a copy of the list itself, not just the reference. This process is + sometimes called cloning, to avoid the ambiguity of the word copy.

    +

    The easiest way to clone a list is to use the slice operator.

    +

    Taking any slice of a creates a new list. In this case the slice happens to + consist of the whole list.

    + + +a = [81,82,83] + +b = a[:] # make a clone using slice +print(a == b) +print(a is b) + +b[0] = 5 + +print(a) +print(b) + + +

    Now we are free to make changes to b without worrying about a. Again, we can clearly see in + codelens that a and b are entirely different list objects.

    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +alist = [4,2,8,6,5] +blist = alist * 2 +blist[3] = 999 +print(alist) + + +
    + + + +

    [4,2,8,999,5,4,2,8,6,5]

    +
    + +

    print alist not print blist

    +
    +
    + + +

    [4,2,8,999,5]

    +
    + +

    blist is changed, not alist.

    +
    +
    + + +

    [4,2,8,6,5]

    +
    + +

    Yes, alist was unchanged by the assignment statement. blist was a copy of the references in alist.

    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/Exercises.ptx b/pretext/TransformingSequences/Exercises.ptx new file mode 100644 index 00000000..7506b4b2 --- /dev/null +++ b/pretext/TransformingSequences/Exercises.ptx @@ -0,0 +1,2 @@ + +

    diff --git a/pretext/TransformingSequences/FStrings.ptx b/pretext/TransformingSequences/FStrings.ptx new file mode 100644 index 00000000..f80b1e00 --- /dev/null +++ b/pretext/TransformingSequences/FStrings.ptx @@ -0,0 +1,165 @@ + +

    + f-Strings +

    There is another (more modern) approach for generating fill-in-the-blanks, f-strings. They were introduced in version 3.6 of python. + f-strings are a Python-specific way of formatting strings.

    +

    You should develop the skill of reading + code that uses both .format() and f-strings, because you may encounter both. You will probably find that it's easier to + write code using f-strings, and we encourage you to use them for your own code, except when you have a specific reason to use .format() instead.

    +

    Let's revisit the example we used before. Pay attention to how the same outcome can be obtained first with the .format() method and then with the f-string approach.

    + + +name = "Rodney Dangerfield" +score = -1 +print("Hello {}. Your score is {}.".format(name, score)) +print(f"Hello {name}. Your score is {score}.") + + +

    In the above example, using the f-strings approach, we fill each placeholder (i.e., each pair of braces) with a variable name whose value we want to display.

    +

    Note that to use an f-string, we must type the character f before the string content. We can then enter expressions within the string between curly braces ({}). + Whenever the python interpreter encounters curly braces inside an f-string, it will evaluate the expression and substitute the resulting value into the string.

    +

    We can use almost any expression inside the braces. It can be: a value; a variable that contains or references a value; an arithmetic expression; a string expression; a method call that returns a value such as a string or a number. + See the following examples illustrating these. Each print() statement produces the exact same output.

    +

    First, we can use values directly inside the braces.

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print(f"Hello {'Peter Huang'}. Your score is {96.75}.") + + +

    We can use expressions (i.e., string operations and arithmetic operations) directly inside the braces.

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print(f"Hello {'Peter' + ' ' + 'Huang'}. Your score is {90 + 6.75}.") + + +

    We can use expressions consisting of variables directly inside the braces.

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print(f"Hello {first_name} {last_name}. Your score is {score}.") + + +

    We can call a function or a method directly inside the braces. + Note that in this example, we use max(), a built-in function that will return the highest value among the values we provide. + Since the value 96.75 is assigned to the variable score and is greater than 60, the value returned from max(score, 60) will be 96.75.

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print(f"Hello {first_name} {last_name}. Your score is {max(score, 60)}.") + + +

    Similar to the format() approach, we can use format specifiers (e.g., :.2f) to further fine-tune the value being displayed. + For instance, if we want to display a floating-point number with one decimal place, we can use :.1f inside the braces and after the expression. + The example below shows how we can apply the format specifiers with both a variable and a method call inside the braces.

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print(f"Hello {first_name} {last_name}. Your score is {score:.1f}.") +print(f"Hello {first_name} {last_name}. Your score is {max(score, 60):.1f}.") + + +

    At this point, we might ask, are f-strings the best approach to use for formatting strings?

    +

    Generally, yes, f-strings make for code that's easier to read, and thus, also easier to write and debug. But there a couple things to watch out for.

    +

    First, note that we need to pay attention to using quotes inside f-strings. If we use quotes, that means we are embedding quotes inside the quotes required by f-strings. + If we use the same type of quotes, such as double quotes, the Python interpreter will have trouble determining how these double-quotes are paired with one another, and it will have trouble understanding what we want a computer to do. + A solution is to use a different kind of quotes, such as single quotes, so that the Python interpreter knows how to pair those quotes (e.g., double with double, single with single) and properly execute our code. + Take a look at the following example, which produces an error, and see if we can fix the bug to have the correct output similar to the previous example (hint: replacing a pair of double quotes).

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print(f"Hello {first_name + " " + last_name}. Your score is {score}.") + + +

    Note that, as the .format() approach does not require using expressions directly inside the format string, we don't have to worry about the quotes-inside-quotes problem when using the .format() approach. The following example uses double quotes throughout.

    + + +first_name = "Peter" +last_name = "Huang" +score = 96.75 +print("Hello {}. Your score is {}.".format(first_name + " " + last_name, score)) + + +

    Second, we need to pay attention when using braces inside f-string, as f-strings already require the use of braces as placeholders. + To display a pair of braces inside f-strings, we need to double the pair of braces.

    +

    This is also true with format strings used with .format(). However, since the .format() approach does not require using expressions directly inside the format string, we can avoid the braces-inside-braces problem by including the braces in the substitution values instead, + as we can see in the following example.

    + + +print("{} {}".format("{I need braces.}", "{I also need braces.}")) + + +

    In summary, different string formatting methods have their own advantages and disadvantages in terms of readability and caveats. There are other considerations (e.g., speed), but we won't discuss them here. + One of the potential solutions to mitigate the issues raised above is to pre-calculate the values using different expressions and store them in variables. + We can then use mostly these variables with either .format() or f-strings, without using complex expressions directly. See the example inside the question below.

    +

    We have introduced various string methods in Python. Use the following question to check if you understand what has been discussed.

    + + +

    What is printed by the following statements?

    + + +s = "I saw the movie, Mary Poppins Returns, and I thought it was great." + +# all the expressions +r_count = s.count("r") +all_case_r_count = s.lower().count("r") +r_precentage = all_case_r_count/len(s) * 100 + +# use mostly variables inside f-strings or format() +first_str = f"The number of r characters: {r_count}." +second_str = "The percentage of r characters (upper or lower case): {:.2f}%.".format(r_precentage) + +# display +print( first_str + " " + second_str) + + +
    + + + +

    The percentage of r characters (upper or lower case): 6.061%. The number of r: 4.

    +
    + +

    Check how many decimal places, sentence order, and how many lower case ‘r' characters there are.

    +
    +
    + + +

    The number of r: 4. The percentage of r characters (upper or lower case): 6.061%.

    +
    + +

    Check how many decimal places and how many lower case ‘r' characters there are.

    +
    +
    + + +

    The percentage of r characters (upper or lower case): 6.06%. The number of r: 3.

    +
    + +

    Check the sentence order.

    +
    +
    + + +

    The number of r: 3. The percentage of r characters (upper or lower case): 6.06%.

    +
    + +

    Yes, the numbers and the order of sentences are correct.

    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/Glossary.ptx b/pretext/TransformingSequences/Glossary.ptx new file mode 100644 index 00000000..f5f5cf85 --- /dev/null +++ b/pretext/TransformingSequences/Glossary.ptx @@ -0,0 +1,45 @@ + +
    + Summary + + + for loop traversal (<c>for</c>) +

    Traversing a string or a list means accessing each character in the string or item in the list, one + at a time. For example, the following for loop:

    + + +for ix in 'Example': + ... + + +

    executes the body of the loop 7 times with different values of ix each time.

    +
    + + range +

    A function that produces a list of numbers. For example, range(5), produces a list of five + numbers, starting with 0, [0, 1, 2, 3, 4].

    +
    + + pattern +

    A sequence of statements, or a style of coding something that has + general applicability in a number of different situations. Part of + becoming a mature programmer is to learn and establish the + patterns and algorithms that form your toolkit.

    +
    + + index +

    A variable or value used to select a member of an ordered collection, such as + a character from a string, or an element from a list.

    +
    + + traverse +

    To iterate through the elements of a collection, performing a similar + operation on each.

    +
    + + accumulator pattern +

    A pattern where the program initializes an accumulator variable and then changes it + during each iteration, accumulating a final result.

    +
    +
    +
    diff --git a/pretext/TransformingSequences/ListDeletion.ptx b/pretext/TransformingSequences/ListDeletion.ptx new file mode 100644 index 00000000..0593affb --- /dev/null +++ b/pretext/TransformingSequences/ListDeletion.ptx @@ -0,0 +1,21 @@ + +
    + List Element Deletion +

    Using slices to delete list elements can be awkward and therefore error-prone. + Python provides an alternative that is more readable. + The del statement removes an element from a list by using its position.

    + + +a = ['one', 'two', 'three'] +del a[1] +print(a) + +alist = ['a', 'b', 'c', 'd', 'e', 'f'] +del alist[1:5] +print(alist) + + +

    As you might expect, del handles negative indices and causes a runtime + error if the index is out of range. In addition, you can use a slice as an index for del. + As usual, slices select all the elements up to, but not including, the second index.

    +
    diff --git a/pretext/TransformingSequences/Mutability.ptx b/pretext/TransformingSequences/Mutability.ptx new file mode 100644 index 00000000..a64e460f --- /dev/null +++ b/pretext/TransformingSequences/Mutability.ptx @@ -0,0 +1,192 @@ + +
    + Mutability +

    Some Python collection types - strings and lists so far - are able to change and some are not. If + a type is able to change, then it is said to be mutable. If the type is not able to change then it + is said to be immutable. This will be expanded below.

    +
    diff --git a/pretext/TransformingSequences/MutatingMethods.ptx b/pretext/TransformingSequences/MutatingMethods.ptx new file mode 100644 index 00000000..ed21174d --- /dev/null +++ b/pretext/TransformingSequences/MutatingMethods.ptx @@ -0,0 +1,263 @@ + +
    + Mutating Methods +

    You've seen some methods already, like the count and index methods. Methods are either + mutating or non-mutating. Mutating methods are ones that change the object after the method has been + used. Non-mutating methods do not change the object after the method has been used.

    +

    The count and index methods are both non-mutating. Count returns the number of occurrences of + the argument given but does not change the original string or list. Similarly, index returns the + leftmost occurrence of the argument but does not change the original string or list. Below we'll talk + about list methods in general. Keep an eye out for methods that are mutating!

    + + List Methods +

    The dot operator can also be used to access built-in methods of list objects. + append is a list method which adds the argument passed to it to the end of + the list. Continuing with this example, we show several other list methods. Many of them are + easy to understand.

    + + +mylist = [] +mylist.append(5) +mylist.append(27) +mylist.append(3) +mylist.append(12) +print(mylist) + +mylist.insert(1, 12) +print(mylist) +print(mylist.count(12)) + +print(mylist.index(3)) +print(mylist.count(5)) + +mylist.reverse() +print(mylist) + +mylist.sort() +print(mylist) + +mylist.remove(5) +print(mylist) + +lastitem = mylist.pop() +print(lastitem) +print(mylist) + + +

    There are two ways to use the pop method. The first, with no parameter, will remove and return the + last item of the list. If you provide a parameter for the position, pop will remove and return the + item at that position. Either way the list is changed.

    +

    The following table provides a summary of the list methods shown above. The column labeled result + gives an explanation as to what the return value is as it relates to the new value of the list. The + word mutator means that the list is changed by the method but nothing is returned (actually + None is returned). A hybrid method is one that not only changes the list but also returns a + value as its result. Finally, if the result is simply a return, then the list is unchanged by the + method.

    +

    Be sure to experiment with these methods to gain a better understanding of what they do.

    + + + + + Method + + + Parameters + + + Result + + + Description + + + + + append + + + item + + + mutator + + + Adds a new item to the end of a list + + + + + insert + + + position, item + + + mutator + + + Inserts a new item at the position given + + + + + pop + + + none + + + hybrid + + + Removes and returns the last item + + + + + pop + + + position + + + hybrid + + + Removes and returns the item at position + + + + + sort + + + none + + + mutator + + + Modifies a list to be sorted + + + + + reverse + + + none + + + mutator + + + Modifies a list to be in reverse order + + + + + index + + + item + + + return idx + + + Returns the position of first occurrence of item + + + + + count + + + item + + + return ct + + + Returns the number of occurrences of item + + + + + remove + + + item + + + mutator + + + Removes the first occurrence of item + + + +
    +

    Details for these and others can be found in the + Python Documentation.

    +

    It is important to remember that methods like append, sort, and reverse all return + None. They change the list; they don't produce a new list. So, while we did reassignment to + increment a number, as in x = x + 1, doing the analogous thing with these operations will lose + the entire list contents (see line 8 below).

    + + +mylist = [] +mylist.append(5) +mylist.append(27) +mylist.append(3) +mylist.append(12) +print(mylist) + +mylist = mylist.sort() #probably an error +print(mylist) + + +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +alist = [4,2,8,6,5] +alist.append(True) +alist.append(False) +print(alist) + + +
    + + + +

    [4,2,8,6,5,False,True]

    +
    + +

    True was added first, then False was added last.

    +
    +
    + + +

    [4,2,8,6,5,True,False]

    +
    + +

    Yes, each item is added to the end of the list.

    +
    +
    + + +

    [True,False,4,2,8,6,5]

    +
    + +

    append adds at the end, not the beginning.

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/NonmutatingMethodsonStrings.ptx b/pretext/TransformingSequences/NonmutatingMethodsonStrings.ptx new file mode 100644 index 00000000..77d77753 --- /dev/null +++ b/pretext/TransformingSequences/NonmutatingMethodsonStrings.ptx @@ -0,0 +1,222 @@ + +
    + Non-mutating Methods on Strings +

    There are a wide variety of methods for string objects. + Try the following program.

    + + +ss = "Hello, World" +print(ss.upper()) + +tt = ss.lower() +print(tt) +print(ss) + + +

    In this example, upper is a method that can be invoked on any string object to create a new string + in which all the characters are in uppercase. lower works in a similar fashion changing all + characters in the string to lowercase. (The original string ss remains unchanged. A new string + tt is created.)

    +

    You've already seen a few methods, such as count and index, that work with strings and are + non-mutating. In addition to those and upper and lower, the following table provides a summary + of some other useful string methods. There are a few activecode examples that follow so that you can + try them out.

    + + + + + Method + + + Parameters + + + Description + + + + + upper + + + none + + + Returns a string in all uppercase + + + + + lower + + + none + + + Returns a string in all lowercase + + + + + count + + + item + + + Returns the number of occurrences of item + + + + + index + + + item + + + Returns the leftmost index where the substring item is found and causes a runtime error if item is not found + + + + + strip + + + none + + + Returns a string with the leading and trailing whitespace removed + + + + + replace + + + old, new + + + Replaces all occurrences of old substring with new + + + + + format + + + substitutions + + + Involved! See , below + + + +
    +

    You should experiment with these methods so that you understand what they do. Note once again that the methods that return strings do not change the original. You can also consult the + Python documentation for strings.

    + + +ss = " Hello, World " + +els = ss.count("l") +print(els) + +print("***"+ss.strip()+"***") + +news = ss.replace("o", "***") +print(news) + + + + +food = "banana bread" +print(food.upper()) + + +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +s = "python rocks" +print(s.count("o") + s.count("p")) + + +
    + + + +

    0

    +
    + +

    There are definitely o and p characters.

    +
    +
    + + +

    2

    +
    + +

    There are 2 o characters but what about p?

    +
    +
    + + +

    3

    +
    + +

    Yes, add the number of o characters and the number of p characters.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +s = "python rocks" +print(s[1]*s.index("n")) + + +
    + + + +

    yyyyy

    +
    + +

    Yes, s[1] is y and the index of n is 5, so 5 y characters. It is important to realize that the index method has precedence over the repetition operator. Repetition is done last.

    +
    +
    + + +

    55555

    +
    + +

    Close. 5 is not repeated, it is the number of times to repeat.

    +
    +
    + + +

    n

    +
    + +

    This expression uses the index of n

    +
    +
    + + +

    Error, you cannot combine all those things together.

    +
    + +

    This is fine, the repetition operator used the result of indexing and the index method.

    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/ObjectsandReferences.ptx b/pretext/TransformingSequences/ObjectsandReferences.ptx new file mode 100644 index 00000000..c7c0b0da --- /dev/null +++ b/pretext/TransformingSequences/ObjectsandReferences.ptx @@ -0,0 +1,62 @@ + +
    + Objects and References +

    If we execute these assignment statements,

    + + +a = "banana" +b = "banana" + + +

    we know that a and b will refer to a string with the letters + "banana". But we don't know yet whether they point to the same string.

    +

    There are two possible ways the Python interpreter could arrange its internal states:

    + List illustration +

    or

    + List illustration +

    In one case, a and b refer to two different string objects that have the same + value. In the second case, they refer to the same object. Remember that an object is something a variable can + refer to.

    +

    We can test whether two names refer to the same object using the is + operator. The is operator will return true if the two references are to the same object. In other words, the references are the same. Try our example from above.

    + + +a = "banana" +b = "banana" + +print(a is b) + + +

    The answer is True. This tells us that both a and b refer to the same object, and that it is the second + of the two reference diagrams that describes the relationship. Python assigns every object a unique id and when we + ask a is b what python is really doing is checking to see if id(a) == id(b).

    + + +a = "banana" +b = "banana" + +print(id(a)) +print(id(b)) + + +

    Since strings are immutable, the Python interpreter often optimizes resources by making two names that refer to the same string value + refer to the same object. You shouldn't count on this (that is, use == to compare strings, not is), but don't be surprised if you find that two variables,each bound to the string banana, have the same id..

    +

    This is not the case with lists, which never share an id just because they have the same contents. Consider the following example. Here, a and b refer to two different lists, + each of which happens to have the same element values. They need to have different ids so that mutations of list a do not affect list b.

    + + +a = [81,82,83] +b = [81,82,83] + +print(a is b) + +print(a == b) + +print(id(a)) +print(id(b)) + + +

    The reference diagram for this example looks like this:

    + Reference diagram for equal different lists +

    a and b have equivalent values but do not refer to the same object. Because their contents are equivalent, a==b evaluates to True; because they are not the same object, a is b evaluates to False.

    +
    diff --git a/pretext/TransformingSequences/StringFormatting.ptx b/pretext/TransformingSequences/StringFormatting.ptx new file mode 100644 index 00000000..92b53dca --- /dev/null +++ b/pretext/TransformingSequences/StringFormatting.ptx @@ -0,0 +1,212 @@ + +
    + String Format Method +

    Until now, we have created strings with variable content using the + operator to concatenate + partial strings together. That works, but it's very hard for people to read or debug a code + line that includes variable names and strings and complex expressions. Consider the following:

    + + +name = "Rodney Dangerfield" +score = -1 # No respect! +print("Hello " + name + ". Your score is " + str(score)) + + +

    Or perhaps more realistically:

    + + +scores = [("Rodney Dangerfield", -1), ("Marlon Brando", 1), ("You", 100)] +for person in scores: + name = person[0] + score = person[1] + print("Hello " + name + ". Your score is " + str(score)) + + +

    In this section, you will learn to write that in a more readable way:

    + + +scores = [("Rodney Dangerfield", -1), ("Marlon Brando", 1), ("You", 100)] +for person in scores: + name = person[0] + score = person[1] + print("Hello {}. Your score is {}.".format(name, score)) + + +

    In grade school quizzes a common convention is to use fill-in-the blanks. For instance,

    +
    +

    Hello _____!

    +
    +

    and you can fill in the name of the person greeted, and combine given text with a chosen + insertion. We use this as an analogy: Python has a similar construction, better called + fill-in-the-braces. The string method format, makes substitutions into places in a string + enclosed in braces. Run this code:

    + + +person = input('Your name: ') +greeting = 'Hello {}!'.format(person) +print(greeting) + + +

    There are several new ideas here!

    +

    The string for the format method has a special form, with braces embedded. + Such a string is called a format string. Places where + braces are embedded are replaced by the value of an expression + taken from the parameter list for the format method. There are many + variations on the syntax between the braces. In this case we use + the syntax where the first (and only) location in the string with + braces has a substitution made from the first (and only) parameter.

    +

    In the code above, this new string is assigned to the identifier + greeting, and then the string is printed.

    +

    The identifier greeting was introduced to break the operations into a clearer sequence of + steps. However, since the value of greeting is only referenced once, it can be eliminated + with the more concise version:

    + + +person = input('Enter your name: ') +print('Hello {}!'.format(person)) + + +

    There can be multiple substitutions, with data of any type. + Next we use floats. Try original price $2.50 with a 7% discount:

    + + +origPrice = float(input('Enter the original price: $')) +discount = float(input('Enter discount percentage: ')) +newPrice = (1 - discount/100)*origPrice +calculation = '${} discounted by {}% is ${}.'.format(origPrice, discount, newPrice) +print(calculation) + + +

    It is important to pass arguments to the format method in the correct order, because they + are matched positionally into the {} places for interpolation where there is more than + one.

    +

    If you used the data suggested, this result is not satisfying. + Prices should appear with exactly two places beyond the decimal point, + but that is not the default way to display floats.

    +

    Format strings can give further information inside the braces + showing how to specially format data. + In particular floats can be shown with a specific number of decimal places. + For two decimal places, put :.2f inside the braces for the monetary values:

    + + +origPrice = float(input('Enter the original price: $')) +discount = float(input('Enter discount percentage: ')) +newPrice = (1 - discount/100)*origPrice +calculation = '${:.2f} discounted by {}% is ${:.2f}.'.format(origPrice, discount, newPrice) +print(calculation) + + +

    The 2 in the format modifier can be replaced by another integer to round to that + specified number of digits.

    +

    This kind of format string depends directly on the order of the + parameters to the format method. There are other approaches that we will + skip here, such as explicitly numbering substitutions.

    +

    It is also important that you give format the same amount of arguments as there are {} waiting for interpolation in the string. If you have a {} in a string that you do not pass arguments for, you may not get an error, but you will see a weird undefined value you probably did not intend suddenly inserted into your string. You can see an example below.

    +

    For example,

    + + +name = "Sally" +greeting = "Nice to meet you" +s = "Hello, {}. {}." + +print(s.format(name,greeting)) # will print Hello, Sally. Nice to meet you. + +print(s.format(greeting,name)) # will print Hello, Nice to meet you. Sally. + +print(s.format(name)) # 2 {}s, only one interpolation item! Not ideal. + + +

    A technical point: Since braces have special meaning in a format string, there must be a + special rule if you want braces to actually be included in the final formatted string. The + rule is to double the braces: {​{ and }​}. For example mathematical set notation uses + braces. The initial and final doubled braces in the format string below generate literal + braces in the formatted string:

    +
    a = 5
    +b = 9
    +setStr = 'The set is {​{​{}, {}​}​}.'.format(a, b)
    +print(setStr).
    +

    Unfortunately, at the time of this writing, the ActiveCode format implementation has a bug, + printing doubled braces, but standard Python prints {5, 9}.

    + + +

    What is printed by the following statements?

    + + +x = 2 +y = 6 +print('sum of {} and {} is {}; product: {}.'.format( x, y, x+y, x*y)) + + +
    + + + +

    Nothing - it causes an error

    +
    + +

    It is legal format syntax: put the data in place of the braces.

    +
    +
    + + +

    sum of {} and {} is {}; product: {}. 2 6 8 12

    +
    + +

    Put the data into the format string; not after it.

    +
    +
    + + +

    sum of 2 and 6 is 8; product: 12.

    +
    + +

    Yes, correct substitutions!

    +
    +
    + + +

    sum of {2} and {6} is {8}; product: {12}.

    +
    + +

    Close: REPLACE the braces.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +v = 2.34567 +print('{:.1f} {:.2f} {:.7f}'.format(v, v, v)) + + +
    + + + +

    2.34567 2.34567 2.34567

    +
    + +

    The numbers before the f in the braces give the number of digits to display after the decimal point.

    +
    +
    + + +

    2.3 2.34 2.34567

    +
    + +

    Close, but round to the number of digits and display the full number of digits specified.

    +
    +
    + + +

    2.3 2.35 2.3456700

    +
    + +

    Yes, correct number of digits with rounding!

    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/TheAccumulatorPatternwithLists.ptx b/pretext/TransformingSequences/TheAccumulatorPatternwithLists.ptx new file mode 100644 index 00000000..3d282175 --- /dev/null +++ b/pretext/TransformingSequences/TheAccumulatorPatternwithLists.ptx @@ -0,0 +1,215 @@ + +
    + The Accumulator Pattern with Lists +

    We can accumulate values into a list rather than accumulating a single numeric value. Consider, for + example, the following program which transforms a list into a new list by squaring each of the values.

    + + +nums = [3, 5, 8] +accum = [] +for w in nums: + x = w**2 + accum.append(x) +print(accum) + + +

    Here, we initialize the accumulator variable to be an empty list, on line 2.

    +

    We iterate through the sequence (line 3). On each iteration we transform the item by squaring it (line 4).

    +

    The update step appends the new item to the list which is stored in the accumulator variable + (line 5). The update happens using the .append(), which mutates the list rather than using a + reassignment. Instead, we could have written accum = accum + [x], or accum += [x]. In either + case, we'd need to concatenate a list containing x, not just x itself.

    +

    At the end, we have accumulated a new list of the same length as the original, but with each item + transformed into a new item. This is called a mapping operation, and we will revisit it in a later chapter.

    +

    Note how this differs from mutating the original list, as you saw in a previous section.

    +

    + Check your understanding +

    + + +

    What is printed by the following statements?

    + + +alist = [4,2,8,6,5] +blist = [ ] +for item in alist: + blist.append(item+5) +print(blist) + + +
    + + + +

    [4,2,8,6,5]

    +
    + +

    5 is added to each item before the append is performed.

    +
    +
    + + +

    [4,2,8,6,5,5]

    +
    + +

    There are too many items in this list. Only 5 append operations are performed.

    +
    +
    + + +

    [9,7,13,11,10]

    +
    + +

    Yes, the for loop processes each item of the list. 5 is added before it is appended to blist.

    +
    +
    + + +

    Error, you cannot concatenate inside an append.

    +
    + +

    5 is added to each item before the append operation is performed.

    +
    +
    +
    +
    + + +

    What is printed by the following statements?

    + + +lst= [3,0,9,4,1,7] +new_list=[] +for i in range(len(lst)): + new_list.append(lst[i]+5) +print(new_list) + + +
    + + + +

    [8,5,14,9,6]

    +
    + +

    Don't forget the last item!

    +
    +
    + + +

    [8,5,14,9,6,12]

    +
    + +

    Yes, the for loop processes each item in lst. 5 is added before lst[i] is appended to new_list.

    +
    +
    + + +

    [3,0,9,4,1,7,5]

    +
    + +

    5 is added to each item before the append operation is performed.

    +
    +
    + + +

    Error, you cannot concatenate inside an append.

    +
    + +

    It is OK to have a complex expression inside the call to the append method. The expression `lst[i]+5` is fully evaluated before the append operation is performed.

    +
    +
    +
    +
    + + +

    +

      +
    1. +

      For each word in the list verbs, add an -ing ending. Save this new list in a new list, ing.

      +
    2. +
    +

    +
    + + +verbs = ["kayak", "cry", "walk", "eat", "drink", "fly"] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testSix(self): + self.assertEqual(ing, ['kayaking', 'crying', 'walking', 'eating', 'drinking', 'flying'], "Testing that the variable ing has the correct value.") + +myTests().main() + + +
    + + +

    Given the list of numbers, numbs, create a new list of those same numbers increased by 5. Save this new list to the variable newlist.

    +
    + + +numbs = [5, 10, 15, 20, 25] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFour(self): + self.assertEqual(newlist, [10, 15, 20, 25, 30], "Testing that the newlist value contains the correct elements.") + +myTests().main() + + +
    + + +

    Given the list of numbers, numbs, modifiy the list numbs so that each of the original numbers are increased by 5. Note this is not an accumulator pattern problem, but its a good review.

    +
    + + +numbs = [5, 10, 15, 20, 25] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(numbs, [10, 15, 20, 25, 30], "Testing that numbs is assigned to correct values.") + self.assertNotIn("append", self.getEditorText(), "Do not use append") + +myTests().main() + + +
    + + +

    For each number in lst_nums, multiply that number by 2 and append it to a new list called larger_nums.

    +
    + + +lst_nums = [4, 29, 5.3, 10, 2, 1817, 1967, 9, 31.32] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(larger_nums, [8, 58, 10.6, 20, 4, 3634, 3934, 18, 62.64], "Testing that larger_nums has been created correctly." ) + +myTests().main() + + +
    +
    diff --git a/pretext/TransformingSequences/TheAccumulatorPatternwithStrings.ptx b/pretext/TransformingSequences/TheAccumulatorPatternwithStrings.ptx new file mode 100644 index 00000000..ffa77c47 --- /dev/null +++ b/pretext/TransformingSequences/TheAccumulatorPatternwithStrings.ptx @@ -0,0 +1,138 @@ + +
    + The Accumulator Pattern with Strings +

    We can also accumulate strings rather than accumulating numbers, as you've seen before. The following program isn't + particularly useful for data processing, but we will see more useful things later that accumulate strings.

    + + +s = input("Enter some text") +ac = "" +for c in s: + ac = ac + c + "-" + +print(ac) + + +

    Look carefully at line 4 in the above program (ac = ac + c + "-"). In words, it says that the + new value of ac will be the old value of ac concatenated with the current character and a dash. + We are building the result string character by character.

    +

    Take a close look also at the initialization of ac. We start with an empty string and then begin adding + new characters to the end. Also note that I have given it a different name this time, ac instead of + accum. There's nothing magical about these names. You could use any valid variable and it would work the + same (try substituting x for ac everywhere in the above code).

    +

    We can use the accumulator pattern to reverse a string, as in the following code.

    + + +s = "Murphy" +ac = "" +for c in s: + ac = c + ac + +print(ac) + + +

    The key thing here is that we have ac = c + ac. The iterator variable comes first, before the accumulator. + We are pre-pending the new value onto the beginning of the value that has been accumulated so far, and that leads to + reversing the whole string. Try it in codelens if you're having trouble envisioning why this works.

    + +

    A little humorous aside… You've probably heard of Murphy's Law, that everything that can go wrong will go wrong.

    +

    In a paper co-authored by one + of this book's authors, + we described eBay's reputation system as an example of Yhprum's Law (Yhprum is Murphy spelled backward, with a little change in capitalization): + Systems that shouldn't work sometimes do, or at least work fairly well.

    +
    +

    + Check your understanding +

    + + +

    What is printed by the following statements:

    + + +s = "ball" +r = "" +for item in s: + r = item.upper() + r +print(r) + + +
    + + + +

    Ball

    +
    + +

    Each item is converted to upper case before concatenation.

    +
    +
    + + +

    BALL

    +
    + +

    Each character is converted to upper case but the order is wrong.

    +
    +
    + + +

    LLAB

    +
    + +

    Yes, the order is reversed due to the order of the concatenation.

    +
    +
    +
    +
    + + +

    +

      +
    1. +

      Accumulate all the characters from the string in the variable str1 into a list of characters called chars.

      +
    2. +
    +

    +
    + + +str1 = "I love python" +# HINT: what's the accumulator? That should go here. + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(chars, ['I', ' ', 'l', 'o', 'v', 'e', ' ', 'p', 'y', 't', 'h', 'o', 'n'], "Testing that chars is assigned to correct values.") + self.assertIn('append', self.getEditorText(), "Testing that you're using append (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    Assign an empty string to the variable output. Using the range function, write code to make it so that the variable output has 35 a s inside it (like "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"). Hint: use the accumulation pattern!

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(output, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "Testing that output has the correct value.") + self.assertNotIn("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", self.getEditorText(), "Testing that you didn't hardcode the answer.") + self.assertNotIn("*", self.getEditorText(), "Testing that you didn't use string multiplication (*); that is easier but isn't the point of the exercise.") + +myTests().main() + + +
    +
    diff --git a/pretext/TransformingSequences/WPAccumulatorPatternStrategies.ptx b/pretext/TransformingSequences/WPAccumulatorPatternStrategies.ptx new file mode 100644 index 00000000..fdee0e29 --- /dev/null +++ b/pretext/TransformingSequences/WPAccumulatorPatternStrategies.ptx @@ -0,0 +1,628 @@ + +
    + 👩‍💻 Accumulator Pattern Strategies + + When to Use it +

    When children first encounter word problems in their math classes, they find it difficult to translate those words into arithmetic expressions involving addition, subtraction, multiplication, and division. Teachers offer heuristics. If the problem says how many…altogether, that's an addition problem. If it says how many are left, that's going to be a subtraction problem.

    +

    Learning to use the accumulator pattern can be similarly confusing. The first step is to recognizing something in the problem statement that suggests an accumulation pattern. Here are a few. You might want to try adding some more of your own.

    + + + + + Phrase + + + Accumulation Pattern + + + + + how many + + + count accumulation + + + + + how frequently + + + + + total + + + sum accumulation + + + + + a list of + + + list accumulation + + + + + concatenate + + + string accumulation + + + + + join together + + + + + + + + + +
    +

    For example, if the problem is to compute the total distance traveled in a series of small trips, you would want to accumulate a sum. If the problem is to make a list of the cubes of all the numbers from 1-25, you want a list accumulation, starting with an empty list and appending one more cube each time. If the problem is to make a comma separated list of all the people invited to a party, you should think of concatenating them; you could start with an empty string and concatenate one more person on each iteration through a list of name.

    +
    + + Before Writing it +

    Before writing any code, we recommend that you first answer the following questions:

    +

    +

      +
    • +

      What sequence will you iterate through as you accumulate a result? It could be a range of numbers, the letters in a string, or some existing list that you have just as a list of names.

      +
    • +
    • +

      What type of value will you accumulate? If your final result will be a number, your accumulator will start out with a number and always have a number even as it is updated each time. Similarly, if your final result will be a list, start with a list. If your final result will be a string, you'll probably want to start with a string; one other option is to accumulate a list of strings and then use the .join() method at the end to concatenate them all together.

      +
    • +
    +

    +

    We recommend writing your answers to these questions in a comment. As you encounter bugs and have to look things up, it will help remind you of what you were trying to implement. Sometimes, just writing the comment can help you to realize a potential problem and avoid it before you ever write any code.

    +
    + + Choosing Good Accumulator and Iterator Variable Names +

    The final piece of advice regarding accumulation strategies is to be intentional when choosing variable names for the + accumulator and iterator variables. A good name can help remind you of what the value is assigned to the variable as + well as what you should have by the end of your code. While it might be tempting at first to use a short variable name, + such as a or x, if you run into any bugs or look at your code later, you may have trouble understanding what you + intended to do and what your code is actually doing.

    +

    For the accumulator variable, one thing that can help is to make the variable name end with so_far. The prefix can be something that helps remind you of what you're supposed to end up with. For example: count_so_far, total_so_far, or cubes_so_far.

    +

    As mentioned previously in a previous Way of the Programmer segment, , the iterator variable should be a singular noun. It should describe what one item in the original sequence, not what one item in the final result will be. For example, when accumulating the cubes of the numbers from 1-25, don't write for cube in range(25):. Instead, write for num in range(25):. If you name the iterator variable cube you run the risk of getting confused that it has already been cubed, when that's an operation that you still have to write in your code.

    +

    + Check Your Understanding +

    + + +

    Does the following prompt suggest an accumulation pattern? If so, what words indicate that? For each string in wrds, add ‘ed' to the end of the word (to make the word past tense). Save these past tense words to a list called past_wrds.

    +
    + + + +

    Yes; "save... to a list"

    +
    + +

    Correct!

    +
    +
    + + +

    Yes; "add 'ed' to the end of the word"

    +
    + +

    Not quite - these words don't necessarily mean that we want to accumulate the new strings into a new variable.

    +
    +
    + + +

    No

    +
    + +

    In this case, an accumulation pattern would be good to use!

    +
    +
    +
    +
    + + +

    Does the following prompt suggest an accumulation pattern? If so, what words indicate that? Write code to sum up all of the numbers in the list seat_counts. Store that number in the variable total_seat_counts.

    +
    + + + +

    Yes; "to sum up"

    +
    + +

    Correct!

    +
    +
    + + +

    Yes; "numbers in the list"

    +
    + +

    Not quite - these words don't necessarily mean that we want to do sum accumulation.

    +
    +
    + + +

    No

    +
    + +

    In this case, an accumulation pattern would be good to use!

    +
    +
    +
    +
    + + +

    Does the following prompt suggest an accumulation pattern? If so, what words indicate that? Write code to print out each character of the string my_str on a separate line.

    +
    + + + +

    Yes; "print out each"

    +
    + +

    Incorrect, this prompt does not need to use the accumulation pattern.

    +
    +
    + + +

    Yes; "on a separate line"

    +
    + +

    Incorrect, this prompt does not need to use the accumulation pattern.

    +
    +
    + + +

    No

    +
    + +

    Correct!

    +
    +
    +
    +
    + + +

    Does the following prompt suggest an accumulation pattern? If so, what words indicate that? Write code that will count the number of vowels in the sentence s and assign the result to the variable num_vowels.

    +
    + + + +

    Yes; "vowels in the sentence"

    +
    + +

    Not quite - these words don't necessarily mean that we want to do sum accumulation.

    +
    +
    + + +

    Yes; "code that will count"

    +
    + +

    Correct!

    +
    +
    + + +

    No

    +
    + +

    In this case, an accumulation pattern would be good to use!

    +
    +
    +
    +
    + + +

    What type should be used for the accumulator variable in the following prompt? Write code that will count the number of vowels in the sentence s and assign the result to the variable num_vowels.

    +
    + + + +

    string

    +
    + +

    Incorrect, that is not the best type for the accumulator variable.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, that is not the best type for the accumulator variable.

    +
    +
    + + +

    integer

    +
    + +

    Yes, because we want to keep track of a number.

    +
    +
    + + +

    none, there is no accumulator variable.

    +
    + +

    Incorrect, we will need an accumulator variable.

    +
    +
    +
    +
    + + +

    What sequence will you iterate through as you accumulate a result in the following prompt? Write code that will count the number of vowels in the sentence s and assign the result to the variable num_vowels.

    +
    + + + +

    num_vowels

    +
    + +

    No, that is the accumulator variable.

    +
    +
    + + +

    s

    +
    + +

    Yes, that is the sequence you will iterate through!

    +
    +
    + + +

    the prompt does not say

    +
    + +

    It is stated in the prompt.

    +
    +
    +
    +
    + + +

    What type should be used for the accumulator variable in the following prompt? For each string in wrds, add ‘ed' to the end of the word (to make the word past tense). Save these past tense words to a list called past_wrds.

    +
    + + + +

    string

    +
    + +

    Incorrect, that is not the best type for the accumulator variable.

    +
    +
    + + +

    list

    +
    + +

    Yes, because we want a new list at the end of the code.

    +
    +
    + + +

    integer

    +
    + +

    Incorrect, that is not the best type for the accumulator variable.

    +
    +
    + + +

    none, there is no accumulator variable.

    +
    + +

    Incorrect, we will need an accumulator variable.

    +
    +
    +
    +
    + + +

    What sequence will you iterate through as you accumulate a result in the following prompt? For each string in wrds, add ‘ed' to the end of the word (to make the word past tense). Save these past tense words to a list called past_wrds.

    +
    + + + +

    wrds

    +
    + +

    Yes, that is the sequence you will iterate through!

    +
    +
    + + +

    past_wrds

    +
    + +

    No, that is the accumulator variable.

    +
    +
    + + +

    the prompt does not say

    +
    + +

    It is stated in the prompt.

    +
    +
    +
    +
    + + +

    What type should be used for the accumulator variable in the following prompt? Write code to sum up all of the numbers in the list seat_counts. Store that number in the variable total_seat_counts.

    +
    + + + +

    string

    +
    + +

    Incorrect, that is not the best type for the accumulator variable.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, that is not the best type for the accumulator variable.

    +
    +
    + + +

    integer

    +
    + +

    Yes, because we want to keep track of a number.

    +
    +
    + + +

    none, there is no accumulator variable.

    +
    + +

    Incorrect, we will need an accumulator variable.

    +
    +
    +
    +
    + + +
    +

    What sequence will you iterate through as you accumulate a result in the following prompt? Write code to sum up all of the numbers in the list seat_counts. Store that number in the variable total_seat_counts.

    +
    +
    + + + +

    seat_counts

    +
    + +

    Yes, that is the sequence you will iterate through!

    +
    +
    + + +

    total_seat_counts

    +
    + +

    No, that is the accumulator variable.

    +
    +
    + + +

    the prompt does not say

    +
    + +

    It is stated in the prompt.

    +
    +
    +
    +
    + + +

    What type should be used for the accumulator variable in the following prompt? Write code to print out each character of the string my_str on a separate line.

    +
    + + + +

    string

    +
    + +

    Incorrect, there should not be an accumulator variable.

    +
    +
    + + +

    list

    +
    + +

    Incorrect, there should not be an accumulator variable.

    +
    +
    + + +

    integer

    +
    + +

    Incorrect, there should not be an accumulator variable.

    +
    +
    + + +

    none, there is no accumulator variable.

    +
    + +

    Correct, because this prompt does not suggest an accumulator pattern

    +
    +
    +
    +
    + + +

    What sequence will you iterate through as you accumulate a result in the following prompt? Write code to print out each character of the string my_str on a separate line.

    +
    + + + +

    my_str

    +
    + +

    Yes, that is the sequence you will iterate through!

    +
    +
    + + +

    my_str.split()

    +
    + +

    Close, but read the prompt again - did it say to iterate through words?

    +
    +
    + + +

    the prompt does not say

    +
    + +

    It is stated in the prompt.

    +
    +
    +
    +
    + + +

    Which of these are good alternatives to the accumulator variable and iterator variable names for the following prompt? For each string in wrds, add ‘ed' to the end of the word (to make the word past tense). Save these past tense words to a list called past_wrds.

    +
    + + + +

    Accumulator Variable: wrds_so_far ; Iterator Variable: wrd

    +
    + +

    Yes, this is the most clear combination of accumulator and iterator variables.

    +
    +
    + + +

    Accumulator Variable: wrds_so_far ; Iterator Variable: x

    +
    + +

    The iterator variable is not the clearest here, something else may be better.

    +
    +
    + + +

    Accumulator Variable: changed_wrds ; Iterator Variable: ed

    +
    + +

    The iterator variable is not the clearest here

    +
    +
    +
    +
    + + +

    Which of these are good alternatives to the accumulator variable and iterator variable names for the following prompt? Write code that will count the number of vowels in the sentence s and assign the result to the variable num_vowels.

    +
    + + + +

    Accumulator Variable: count_so_far ; Iterator Variable: l

    +
    + +

    Though the accumulator variable is good, the iterator variable is not very clear.

    +
    +
    + + +

    Accumulator Variable: total_so_far ; Iterator Variable: letter

    +
    + +

    Yes! Both the accumulator and iterator variable are clear.

    +
    +
    + + +

    Accumulator Variable: n_v ; Iterator Variable: letter

    +
    + +

    Though the iterator variable is good, the accumulator variable is not very clear.

    +
    +
    +
    +
    + + +

    Which of these are good alternatives to the accumulator variable and iterator variable names for the following prompt? Write code to sum up all of the numbers in the list seat_counts. Store that number in the variable total_seat_counts.

    +
    + + + +

    Accumulator Variable: total_so_far ; Iterator Variable: seat

    +
    + +

    Though the accumulator variable is good, the iterator variable is not clear enough.

    +
    +
    + + +

    Accumulator Variable: total_seats_so_far ; Iterator Variable: seat_count

    +
    + +

    Yes, this is the most clear combination.

    +
    +
    + + +

    Accumulator Variable: count ; Iterator Variable: n

    +
    + +

    Neither the accumulator nor iterator variable are clear enough. The accumulator variable is better, but could be more clear.

    +
    +
    +
    +
    + + +

    Which of these are good alternatives to the accumulator variable and iterator variable names for the following prompt? Write code to print out each character of the string my_str on a separate line.

    +
    + + + +

    Accumulator Variable: character_so_far ; Iterator Variable: char

    +
    + +

    Incorrect, there is no accumulator variable neccessary

    +
    +
    + + +

    Accumulator Variable: no variable needed ; Iterator Variable: c

    +
    + +

    Though no accumulator variable is needed, the iterator variable is not clear enough

    +
    +
    + + +

    Accumulator Variable: no variable needed ; Iterator Variable: char

    +
    + +

    Yes, there is no accumulator variable needed and the iterator variable is clear (char is a common short form of character)

    +
    +
    +
    +
    +
    +
    diff --git a/pretext/TransformingSequences/WPDontMutateAListYouIterateThrough.ptx b/pretext/TransformingSequences/WPDontMutateAListYouIterateThrough.ptx new file mode 100644 index 00000000..37c466f6 --- /dev/null +++ b/pretext/TransformingSequences/WPDontMutateAListYouIterateThrough.ptx @@ -0,0 +1,65 @@ + +
    + 👩‍💻 Don't Mutate A List That You Are Iterating Through +

    So far we've shown you how to iterate through a list:

    + + +colors = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"] + +for color in colors: + print(color) + + +

    As well as accumulate a list by appending items:

    + + +colors = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"] +initials = [] + +for color in colors: + initials.append(color[0]) + +print(initials) + + +

    You may be tempted now to iterate through a list and accumulate some data into it or delete data from it as you're traversing the list, however that + often becomes very confusing. In the following code we will filter out all words that begin with P, B, or T.

    + + +colors = ["Red", "Purple", "Yellow"] + +for position in range(len(colors)): + color = colors[position] + print(color) + if color[0] in ["P", "B", "T"]: + del colors[position] + +print(colors) + + +

    In the code above, we iterated through the indexes, and deleted each item that begins with a bad letter. + However, we run into a problem because as we delete content from the list, the list + becomes shorter. Eventually, we have an issue indexing on line 4. Try stepping through it in codelens to see what's going on.

    +

    We can also try to accumulate a list that we're iterating through as well. What do you think will happen here?

    + + +colors = ["Red", "Orange", "Indigo"] + +for color in colors: + if color[0] in ["A", "E", "I", "O", "U"]: + colors.append(color) + + print(colors) + + if len(colors)>6: + break + + +

    Now try stepping through this code. + When we come across a color that begins with a vowel, that color is added to the end of the list. + The python interpreter doesn't make a copy of the sequence at the beginning and iterate through that copy. + It actually asks for the next item in the sequence at the top of each iteration. But here we are adding a new item to the + end of the list before we get to the end of the list, so there's always a next item. We would have an infinite loop.

    +

    To prevent the infinite loop, we've added a break once the list has six strings in it. You'll learn about break and continue later in the book.

    +

    The main message here is that you should not mutate a list while you're iterating through it! You'll get errors, infinite loops, or, worse, semantic errors: your code may run and produce very surprising results.

    +
    diff --git a/pretext/TransformingSequences/intro-SequenceMutation.ptx b/pretext/TransformingSequences/intro-SequenceMutation.ptx new file mode 100644 index 00000000..dbede1b6 --- /dev/null +++ b/pretext/TransformingSequences/intro-SequenceMutation.ptx @@ -0,0 +1,58 @@ + +
    + Introduction: Transforming Sequences +

    The sequences that we have used so far have been static: a list of colors that doesn't change or the characters in a string that stays the same. + The real world is more complicated than that. A list of users for your social network may need to grow to accommodate new users (or shrink when users leave your service). The letters in a string may need to be modified to personalize a message (Welcome to Wonderland, <your name>), or to encode a secret message.

    +

    The following chapter will detail more of the methods that can be used to transform lists and strings. Generally, the two methods that can be used are changing the list object, in place, by mutating it; or by constructing a new string object using a copy-with-change operation.

    + + Learning Goals +

    +

      +
    • +

      To understand the concepts of mutable and immutable data types

      +
    • +
    • +

      To understand that methods on strings leave the original string alone but return a new string

      +
    • +
    • +

      To understand that lists are mutable data types and that mutating methods on lists return None

      +
    • +
    +

    +
    + + Objectives +

    Demonstrate the correct use of:

    +

    +

      +
    • +

      concatenate

      +
    • +
    • +

      index operator

      +
    • +
    • +

      substring (slice)

      +
    • +
    • +

      search - contains in / not in and index

      +
    • +
    • +

      find method

      +
    • +
    • +

      append

      +
    • +
    • +

      join

      +
    • +
    • +

      split

      +
    • +
    • +

      string format method

      +
    • +
    +

    +
    +
    diff --git a/pretext/TransformingSequences/toctree.ptx b/pretext/TransformingSequences/toctree.ptx new file mode 100644 index 00000000..741e16d9 --- /dev/null +++ b/pretext/TransformingSequences/toctree.ptx @@ -0,0 +1,22 @@ + + + Transforming Sequences + + + + + + + + + + + + + + + + + + + diff --git a/pretext/TransformingSequences/week4a1.ptx b/pretext/TransformingSequences/week4a1.ptx new file mode 100644 index 00000000..a793f7d5 --- /dev/null +++ b/pretext/TransformingSequences/week4a1.ptx @@ -0,0 +1,4 @@ + +
    + Placeholder - needs manual fixing +
    \ No newline at end of file diff --git a/pretext/Tuples/ChapterAssessment.ptx b/pretext/Tuples/ChapterAssessment.ptx new file mode 100644 index 00000000..346356a1 --- /dev/null +++ b/pretext/Tuples/ChapterAssessment.ptx @@ -0,0 +1,112 @@ + +
    + Chapter Assessment + + +

    Create a tuple called olympics with four elements: Beijing, London, Rio, Tokyo.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(olympics, ('Beijing', 'London', 'Rio', 'Tokyo'), "Testing that olympics is assigned to correct values") + +myTests().main() + + +
    + + +

    The list below, tuples_lst, is a list of tuples. Create a list of the second elements of each tuple and assign this list to the variable country.

    +
    + + +tuples_lst = [('Beijing', 'China', 2008), ('London', 'England', 2012), ('Rio', 'Brazil', 2016, 'Current'), ('Tokyo', 'Japan', 2020, 'Future')] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testTwo(self): + self.assertEqual(country, ['China', 'England', 'Brazil', 'Japan'], "Testing that third is assigned to correct values") + +myTests().main() + + +
    + + +

    With only one line of code, assign the variables city, country, and year to the values of the tuple olymp.

    +
    + + +olymp = ('Rio', 'Brazil', 2016) + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testThree(self): + self.assertEqual(city, "Rio", "Testing that city is assigned to correct value.") + self.assertEqual(country, "Brazil", "Testing that country is assigned to correct value.") + self.assertEqual(year, 2016, "Testing that year is assigned to correct value.") + +myTests().main() + + +
    + + +

    Define a function called info with five parameters: name, gender, age, bday_month, and hometown. The function should then return a tuple with all five parameters in that order.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFour(self): + self.assertEqual(info("Sue", "Female", 20, "March", "Ann Arbor"), ("Sue", "Female", 20, "March", "Ann Arbor"), "Testing that info('Sue', 'Female', 20, 'March', 'Ann Arbor') returns('Sue', 'Female', 20, 'March', 'Ann Arbor')") + +myTests().main() + + +
    + + +

    Given is the dictionary, gold, which shows the country and the number of gold medals they have earned so far in the 2016 Olympics. Create a list, num_medals, that contains only the number of medals for each country. You must use the .items() method. Note: The .items() method provides a list of tuples. Do not use .keys() method.

    +
    + + +gold = {'USA':31, 'Great Britain':19, 'China':19, 'Germany':13, 'Russia':12, 'Japan':10, 'France':8, 'Italy':8} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testFive(self): + self.assertEqual(sorted(num_medals), sorted([31, 19, 19, 13, 12, 10, 8, 8]), "Testing that num_medals is assigned to correct values.") + self.assertNotIn('.keys()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('.items()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('in gold:', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    +
    diff --git a/pretext/Tuples/Exercises.ptx b/pretext/Tuples/Exercises.ptx new file mode 100644 index 00000000..a76aabe9 --- /dev/null +++ b/pretext/Tuples/Exercises.ptx @@ -0,0 +1,52 @@ + + + Exercises +

    +

      +
    1. + + +

      Fill in the left side of line 7 so that the following code runs without error

      +
      + + +def circleInfo(r): + """ Return (circumference, area) of a circle of radius r """ + c = 2 * 3.14159 * r + a = 3.14159 * r * r + return c, a + + = circleInfo(10) +print("area is " + str(area)) +print("circumference is " + str(circ)) + + +
      +
    2. +
    3. + + +

      Use a for loop to print out the last name, year of birth, and city for each of the people. (There are multiple ways you could do this. Try out some code and see what happens!)

      +
      + + +julia = ("Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia") +claude = ("Claude", "Shannon", 1916, "A Mathematical Theory of Communication", 1948, "Mathematician", "Petoskey, Michigan") +alan = ("Alan", "Turing", 1912, "Computing machinery and intelligence", 1950, "Mathematician", "London, England") + +people = [julia, claude, alan] + + +
      +
    4. +
    +

    + + Contributed Exercises + {% for q in questions: %} + <div class='oneq full-width'> + {{ q['htmlsrc']|safe }} + </div> +{% endfor %} + +
    diff --git a/pretext/Tuples/Glossary.ptx b/pretext/Tuples/Glossary.ptx new file mode 100644 index 00000000..4835a150 --- /dev/null +++ b/pretext/Tuples/Glossary.ptx @@ -0,0 +1,26 @@ + +
    + Glossary + + + tuple +

    A type of sequence, much like a list but immutable. A tuple is created + by enclosing one or more values in parentheses, separated by commas.

    +
    + + packing +

    When multiple values are specified, separated by commas, they are + packed into a tuple.

    +
    + + unpacking +

    When a tuple is assigned to a collection of variable names separated + by commas, the tuple is unpacked and the separate values are assigned to each + of the variables.

    +
    + + pair +

    A tuple with exactly two items.

    +
    +
    +
    diff --git a/pretext/Tuples/TupleAssignmentwithunpacking.ptx b/pretext/Tuples/TupleAssignmentwithunpacking.ptx new file mode 100644 index 00000000..d60a6640 --- /dev/null +++ b/pretext/Tuples/TupleAssignmentwithunpacking.ptx @@ -0,0 +1,227 @@ + +
    + Tuple Assignment with Unpacking +

    Python has a very powerful tuple assignment feature that allows a tuple of variable names on the left of an + assignment statement to be assigned values from a tuple on the right of the assignment. Another way to think of this + is that the tuple of values is unpacked into the variable names.

    + + +julia = "Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia" + +name, surname, birth_year, movie, movie_year, profession, birth_place = julia + + +

    This does the equivalent of seven assignment statements, all on one easy line.

    +

    Naturally, the number of variables on the left and the number of values on the right have to be the same.

    + + +(a, b, c, d) = (1, 2, 3) # ValueError: need more than 3 values to unpack + + + +

    Unpacking into multiple variable names also works with lists, or any other sequence type, as long as there is exactly one value for each variable. For example, you can write x, y = [3, 4].

    +
    + + Swapping Values between Variables +

    This feature is used to enable swapping the values of two variables. With conventional assignment statements, we have to + use a temporary variable. For example, to swap a and b:

    + + +a = 1 +b = 2 +temp = a +a = b +b = temp +print(a, b, temp) + + +

    Tuple assignment solves this problem neatly:

    + + +a = 1 +b = 2 +(a, b) = (b, a) +print(a, b) + + +

    The left side is a tuple of variables; the right side is a tuple of values. Each value is assigned to its respective + variable. All the expressions on the right side are evaluated before any of the assignments. This feature makes + tuple assignment quite versatile.

    +
    + + Unpacking Into Iterator Variables +

    Multiple assignment with unpacking is particularly useful when you iterate through a list of tuples. You can unpack each tuple into several loop variables. For example:

    + + +authors = [('Paul', 'Resnick'), ('Brad', 'Miller'), ('Lauren', 'Murphy')] +for first_name, last_name in authors: + print("first name:", first_name, "last name:", last_name) + + +

    On the first iteration the tuple ('Paul', 'Resnick') is unpacked into the two variables first_name and last_name. One the second iteration, the next tuple is unpacked into those same loop variables.

    +
    + + The Pythonic Way to Enumerate Items in a Sequence +

    When we first introduced the for loop, we provided an example of how to iterate through the indexes of a sequence, and thus enumerate the items and their positions in the sequence.

    + + +fruits = ['apple', 'pear', 'apricot', 'cherry', 'peach'] +for n in range(len(fruits)): + print(n, fruits[n]) + + +

    We are now prepared to understand a more pythonic approach to enumerating items in a sequence. Python provides a built-in function enumerate. It takes a sequence as input and returns a sequence of tuples. In each tuple, the first element is an integer and the second is an item from the original sequence. (It actually produces an iterable rather than a list, but we can use it in a for loop as the sequence to iterate over.)

    + + +fruits = ['apple', 'pear', 'apricot', 'cherry', 'peach'] +for item in enumerate(fruits): + print(item[0], item[1]) + + +

    The pythonic way to consume the results of enumerate, however, is to unpack the tuples while iterating through them, so that the code is easier to understand.

    + + +fruits = ['apple', 'pear', 'apricot', 'cherry', 'peach'] +for idx, fruit in enumerate(fruits): + print(idx, fruit) + + +

    + Check your Understanding +

    + + +

    Consider the following alternative way to swap the values of variables x and y. What's wrong with it?

    + + +# assume x and y already have values assigned to them +y = x +x = y + + +
    + + + +

    You can't use different variable names on the left and right side of an assignment statement.

    +
    + +

    Sure you can; you can use any variable on the right-hand side that already has a value.

    +
    +
    + + +

    At the end, x still has it's original value instead of y's original value.

    +
    + +

    Once you assign x's value to y, y's original value is gone.

    +
    +
    + + +

    Actually, it works just fine!

    +
    + +

    Once you assign x's value to y, y's original value is gone.

    +
    +
    +
    +
    + + +

    With only one line of code, assign the variables water, fire, electric, and grass to the values Squirtle, Charmander, Pikachu, and Bulbasaur

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(water, "Squirtle", "Testing that water is assigned to the correct value.") + self.assertEqual(fire, "Charmander", "Testing that fire is assigned to the correct value.") + self.assertEqual(electric, "Pikachu", "Testing that electric is assigned to the correct value.") + self.assertEqual(grass, "Bulbasaur", "Testing that grass is assigned to the correct value.") + +myTests().main() + + +
    + + +

    With only one line of code, assign four variables, v1, v2, v3, and v4, to the following four values: 1, 2, 3, 4.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(v1, 1, "Testing that v1 was assigned correctly.") + self.assertEqual(v2, 2, "Testing that v2 was assigned correctly.") + self.assertEqual(v3, 3, "Testing that v3 was assigned correctly.") + self.assertEqual(v4, 4, "Testing that v4 was assigned correctly.") + +myTests().main() + + +
    + + +

    If you remember, the .items() dictionary method produces a sequence of tuples. Keeping this in mind, we have provided you a dictionary called pokemon. For every key value pair, append the key to the list p_names, and append the value to the list p_number. Do not use the .keys() or .values() methods.

    +
    + + +pokemon = {'Rattata': 19, 'Machop': 66, 'Seel': 86, 'Volbeat': 86, 'Solrock': 126} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(p_names), sorted(['Rattata', 'Machop', 'Seel', 'Volbeat', 'Solrock']), "Testing that p_name has the correct values") + def testTwo(self): + self.assertEqual(sorted(p_number), sorted([19,66,86,86,126]), "Testing that p_number hsa the correct values") + self.assertNotIn('.keys()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('.items()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('.values()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    + + +

    The .items() method produces a sequence of key-value pair tuples. With this in mind, write code to create a list of keys from the dictionary track_medal_counts and assign the list to the variable name track_events. Do NOT use the .keys() method.

    +
    + + +track_medal_counts = {'shot put': 1, 'long jump': 3, '100 meters': 2, '400 meters': 2, '100 meter hurdles': 3, 'triple jump': 3, 'steeplechase': 2, '1500 meters': 1, '5K': 0, '10K': 0, 'marathon': 0, '200 meters': 0, '400 meter hurdles': 0, 'high jump': 1} + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(sorted(track_events), sorted(['shot put', 'long jump', '100 meters', '400 meters', '100 meter hurdles', 'triple jump', 'steeplechase', '1500 meters', '5K', '10K', 'marathon', '200 meters', '400 meter hurdles', 'high jump']) , "Testing that track_events was created correctly.") + self.assertNotIn('.keys()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertIn('.items()', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + self.assertNotIn('in track_medal_counts:', self.getEditorText(), "Testing your code (Don't worry about actual and expected values).") + +myTests().main() + + +
    +
    +
    diff --git a/pretext/Tuples/TuplePacking-Intro.ptx b/pretext/Tuples/TuplePacking-Intro.ptx new file mode 100644 index 00000000..284bd846 --- /dev/null +++ b/pretext/Tuples/TuplePacking-Intro.ptx @@ -0,0 +1,26 @@ + +
    + Introduction +

    You have previously seen tuples, a sequence type that works just like lists except that they are immutable.

    +

    When working with multiple values or multiple variable names, the Python interpreter does some automatic packing and unpacking to and from tuples, which allows some simplifications in the code you write.

    + + Learning Objectives +

    At the end of this chapter, you will be able to:

    +

    +

      +
    • +

      Recognize when code is using implicit tuple packing

      +
    • +
    • +

      Use implicit tuple packing to return multiple values from a function

      +
    • +
    • +

      Read and write code that unpacks a tuple into multiple variables

      +
    • +
    • +

      Learn a common pattern that unpacks the results of calling enumerate on a sequence

      +
    • +
    +

    +
    +
    diff --git a/pretext/Tuples/TuplePacking.ptx b/pretext/Tuples/TuplePacking.ptx new file mode 100644 index 00000000..1e1c648b --- /dev/null +++ b/pretext/Tuples/TuplePacking.ptx @@ -0,0 +1,146 @@ + +
    + Tuple Packing +

    Wherever python expects a single value, if multiple expressions are provided, separated + by commas, they are automatically packed into a tuple. For example, we can omit the parentheses when assigning a tuple of values to a single variable.

    + + +julia = ("Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia") +# or equivalently +julia = "Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia" +print(julia[4]) + + +

    + Check your understanding +

    + + +

    Which of the following statements will output Atlanta, Georgia

    +
    + + + +

    print(julia['city'])

    +
    + +

    julia is a tuple, not a dictionary; indexes must be integers.

    +
    +
    + + +

    print(julia[-1])

    +
    + +

    [-1] picks out the last item in the sequence.

    +
    +
    + + +

    print(julia(-1))

    +
    + +

    Index into tuples using square brackets. julia(-1) will try to treat julia as a function call, with -1 as the parameter value.

    +
    +
    + + +

    print(julia(6))

    +
    + +

    Index into tuples using square brackets. julia(-1) will try to treat julia as a function call, with -1 as the parameter value.

    +
    +
    + + +

    print(julia[7])

    +
    + +

    Indexing starts at 0. You want the seventh item, which is julia[6]

    +
    +
    +
    +
    + + +

    2. Create a tuple called practice that has four elements: ‘y', ‘h', ‘z', and ‘x'.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(practice, ('y','h','z','x'), "Testing that pratice value is assigned to correct value.") + +myTests().main() + + +
    + + +

    3. Create a tuple named tup1 that has three elements: ‘a', ‘b', and ‘c'.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(tup1, ('a', 'b', 'c'), "Testing that tup1 was created correctly.") + +myTests().main() + + +
    + + +

    4. Provided is a list of tuples. Create another list called t_check that contains the third element of every tuple.

    +
    + + +lst_tups = [('Articuno', 'Moltres', 'Zaptos'), ('Beedrill', 'Metapod', 'Charizard', 'Venasaur', 'Squirtle'), ('Oddish', 'Poliwag', 'Diglett', 'Bellsprout'), ('Ponyta', "Farfetch'd", "Tauros", 'Dragonite'), ('Hoothoot', 'Chikorita', 'Lanturn', 'Flaaffy', 'Unown', 'Teddiursa', 'Phanpy'), ('Loudred', 'Volbeat', 'Wailord', 'Seviper', 'Sealeo')] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(t_check, ['Zaptos', 'Charizard', 'Diglett', 'Tauros', 'Lanturn', 'Wailord'], "Testing that pratice value is assigned to correct value.") + +myTests().main() + + +
    + + +

    5. Below, we have provided a list of tuples. Write a for loop that saves the second element of each tuple into a list called seconds.

    +
    + + +tups = [('a', 'b', 'c'), (8, 7, 6, 5), ('blue', 'green', 'yellow', 'orange', 'red'), (5.6, 9.99, 2.5, 8.2), ('squirrel', 'chipmunk')] + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(seconds, ['b', 7, 'green', 9.99, 'chipmunk'], "Testing that seconds was created correctly.") + +myTests().main() + + +
    +
    diff --git a/pretext/Tuples/TuplesasReturnValues.ptx b/pretext/Tuples/TuplesasReturnValues.ptx new file mode 100644 index 00000000..946ee52e --- /dev/null +++ b/pretext/Tuples/TuplesasReturnValues.ptx @@ -0,0 +1,143 @@ + +
    + Tuples as Return Values +

    Functions can return tuples as return values. This is very useful — we often want to know some batsman's highest and + lowest score, or we want to find the mean and the standard deviation, or we want to know the year, the month, and the + day, or if we're doing some ecological modeling we may want to know the number of rabbits and the number of wolves on + an island at a given time. In each case, a function (which can only return a single value), can create a single tuple holding multiple elements.

    +

    For example, we could write a function that returns both the area and the circumference of a circle of radius r.

    + + +def circleInfo(r): + """ Return (circumference, area) of a circle of radius r """ + c = 2 * 3.14159 * r + a = 3.14159 * r * r + return (c, a) + +print(circleInfo(10)) + + +

    Again, we can take advantage of packing to make the code look a little more readable on line 4

    + + +def circleInfo(r): + """ Return (circumference, area) of a circle of radius r """ + c = 2 * 3.14159 * r + a = 3.14159 * r * r + return c, a + +print(circleInfo(10)) + + +

    It's common to unpack the returned values into multiple variables.

    + + +def circleInfo(r): + """ Return (circumference, area) of a circle of radius r """ + c = 2 * 3.14159 * r + a = 3.14159 * r * r + return c, a + +print(circleInfo(10)) + +circumference, area = circleInfo(10) +print(circumference) +print(area) + +circumference_two, area_two = circleInfo(45) +print(circumference_two) +print(area_two) + + +

    + Check your Understanding +

    + + +

    If you want a function to return two values, contained in variables x and y, which of the following methods will work?

    +
    + + + +

    Make the last two lines of the function be "return x" and "return y"

    +
    + +

    As soon as the first return statement is executed, the function exits, so the second one will never be executed; only x will be returned

    +
    +
    + + +

    Include the statement "return [x, y]"

    +
    + +

    return [x,y] is not the preferred method because it returns x and y in a mutable list rather than a tuple which is more efficient. But it is workable.

    +
    +
    + + +

    Include the statement "return (x, y)"

    +
    + +

    return (x, y) returns a tuple.

    +
    +
    + + +

    Include the statement "return x, y"

    +
    + +

    return x, y causes the two values to be packed into a tuple.

    +
    +
    + + +

    It's not possible to return two values; make two functions that each compute one value.

    +
    + +

    It is possible, and frequently useful, to have one function compute multiple values.

    +
    +
    +
    +
    + + +

    Define a function called information that takes as input, the variables name, birth_year, fav_color, and hometown. It should return a tuple of these variables in this order.

    +
    + + + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(information("Sarah", 1996, "purple", "St. Louis"), ("Sarah", 1996, "purple", "St. Louis"), "Testing that information returns the correct tuple on input ('Sarah', 1996, 'purple', 'St. Louis')") + +myTests().main() + + +
    + + +

    Define a function called info with the following required parameters: name, age, birth_year, year_in_college, and hometown. The function should return a tuple that contains all the inputted information.

    +
    + + +def info(): + +===== + +from unittest.gui import TestCaseGui + +class myTests(TestCaseGui): + + def testOne(self): + self.assertEqual(info(name='Tina', age=20, birth_year=1996, year_in_college='sophomore', hometown='Detroit'), ('Tina', 20, 1996, 'sophomore', 'Detroit'), "Testing the function info on input: name='Tina', age=20, birth_year=1996, year_in_college='sophomore', hometown='Detroit'.") + +myTests().main() + + +
    +
    diff --git a/pretext/Tuples/UnpackingArgumentsToFunctions.ptx b/pretext/Tuples/UnpackingArgumentsToFunctions.ptx new file mode 100644 index 00000000..b53de86f --- /dev/null +++ b/pretext/Tuples/UnpackingArgumentsToFunctions.ptx @@ -0,0 +1,31 @@ + +
    + Unpacking Tuples as Arguments to Function Calls +

    Python even provides a way to pass a single tuple to a function and have it be unpacked for assignment to the named + parameters.

    + + +def add(x, y): + return x + y + +print(add(3, 4)) +z = (5, 4) +print(add(z)) # this line causes an error + + +

    This won't quite work. It will cause an error, because the function add is expecting two parameters, but you're only passing one parameter (a tuple). + If only there was a way to tell python to unpack that tuple and use the first element to assign to x and the second to y.

    +

    Actually, there is a way.

    + + +def add(x, y): + return x + y + +print(add(3, 4)) +z = (5, 4) +print(add(*z)) # this line will cause the values to be unpacked + + +

    Don't worry about mastering this idea yet. But later in the course, if you come across some code that someone else has + written that uses the * notation inside a parameter list, come back and look at this again.

    +
    diff --git a/pretext/Tuples/toctree.ptx b/pretext/Tuples/toctree.ptx new file mode 100644 index 00000000..541a9a7c --- /dev/null +++ b/pretext/Tuples/toctree.ptx @@ -0,0 +1,12 @@ + + + Tuple Packing and Unpacking + + + + + + + + + diff --git a/pretext/_static/cervantes.html.ptx b/pretext/_static/cervantes.html.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/cervantes.html.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/d3.min.js.ptx b/pretext/_static/d3.min.js.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/d3.min.js.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/excel-formula.min.js.ptx b/pretext/_static/excel-formula.min.js.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/excel-formula.min.js.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/holmes1.html.ptx b/pretext/_static/holmes1.html.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/holmes1.html.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/holmes2.html.ptx b/pretext/_static/holmes2.html.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/holmes2.html.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/home.html.ptx b/pretext/_static/home.html.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/home.html.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/kmeans.js.ptx b/pretext/_static/kmeans.js.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/kmeans.js.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/python.html.ptx b/pretext/_static/python.html.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/python.html.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/_static/range-slider.js.ptx b/pretext/_static/range-slider.js.ptx new file mode 100644 index 00000000..ac981963 --- /dev/null +++ b/pretext/_static/range-slider.js.ptx @@ -0,0 +1,2 @@ + +<script type="text/javascript">function CodeChat_doStyle(element) {function walk_tree(elements,func_walk,func_child) {let walk_children = [];for (let index = 0; index < elements.length; ++index) {let that = elements[index];while (that && !func_walk(that)) {that = that.parentElement;}if (that) {that = func_walk(that);walk_children.push(that);while (that && func_child(that)) {that = func_child(that);walk_children.push(that);}}}return walk_children;};element = (typeof element !== 'undefined') ? element : document;let code = element.getElementsByClassName("fenced-code");walk_tree(code, x => x.nextElementSibling, x => x.firstElementChild).map(x =>x.classList.add('CodeChat_noTop'));walk_tree(code, x => x.previousElementSibling, x => x.lastElementChild).map(x =>x.classList.add('CodeChat_noBottom'));}document.addEventListener("DOMContentLoaded", function(event) { CodeChat_doStyle(); });</script> diff --git a/pretext/bookinfo.ptx b/pretext/bookinfo.ptx new file mode 100644 index 00000000..76da3551 --- /dev/null +++ b/pretext/bookinfo.ptx @@ -0,0 +1,9 @@ + + + fopp + + + + A project based course for CS1, A huge rewrite of How to Think like a Computer Scientist by Paul Resnick and Brad Miller. The projects in this book lean in the direction of data science, but we are actively seeking projects relevant to any area of study. + + diff --git a/pretext/main.ptx b/pretext/main.ptx new file mode 100644 index 00000000..107f3e1f --- /dev/null +++ b/pretext/main.ptx @@ -0,0 +1,60 @@ + + + + + + Foundations of Python Programming + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pretext/missing_files.txt b/pretext/missing_files.txt new file mode 100644 index 00000000..7c7d0424 --- /dev/null +++ b/pretext/missing_files.txt @@ -0,0 +1,16 @@ +PythonModules/ChapterAssessment.ptx +PythonTurtle/OurFirstTurtleProgram.ptx +Iteration/TheforLoop.ptx +Iteration/GeneralizedSequences.ptx +Iteration/week2a2.ptx +Conditionals/Exercises.ptx +Conditionals/week3a1.ptx +TransformingSequences/week4a1.ptx +Dictionaries/Exercises.ptx +Dictionaries/ChapterAssessment.ptx +Functions/PassingMutableObjects.ptx +NestedData/WPExtractFromNestedData.ptx +TestCases/WPProgramDevelopment.ptx +Inheritance/Exercises.ptx +Inheritance/chapterProject.ptx +Projects/monte_carlo_simulations.ptx diff --git a/pretext/rs-substitutes.xml b/pretext/rs-substitutes.xml new file mode 100644 index 00000000..47be3520 --- /dev/null +++ b/pretext/rs-substitutes.xml @@ -0,0 +1,863 @@ + +]> + +
    + + +
    5 * 3 > 10 and 4 + 6 == 11
    +
    +
    + +
    +
    +
    + + +
    f = open('scarlet.txt', 'r')
    +txt = f.read()
    +# now txt is one long string containing all the characters
    +letter_counts = {} # start with an empty dictionary
    +letter_counts['t'] = 15 # initialize the t counter
    +letter_counts['s'] = 25 # initialize the s counter
    +
    +
    + +
    +
    +
    + + +
    def hello2(s):
    +    print("Hello " + s)
    +    print("Glad to meet you")
    +
    +hello2("Nick")
    +
    +
    + +
    +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +After visualizing the data how many different species do you think are represented in the data? + +
    • 1
    • + +
    • 2
    • + +
    • 3
    • + +
    • 4
    • + +
    • 5
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    +
      +During this project I was primarily in my... + +
    • 1. Comfort Zone
    • + +
    • 2. Learning Zone
    • + +
    • 3. Panic Zone
    • +
    +
    +
      +Completing this project took... + +
    • 1. Very little time
    • + +
    • 2. A reasonable amount of time
    • + +
    • 3. More time than is reasonable
    • +
    +
    +
      +Based on my own interests and needs, the things taught in this project... + +
    • 1. Don't seem worth learning
    • + +
    • 2. May be worth learning
    • + +
    • 3. Are definitely worth learning
    • +
    +
    +
      +For me to master the things taught in this project feels... + +
    • 1. Definitely within reach
    • + +
    • 2. Within reach if I try my hardest
    • + +
    • 3. Out of reach no matter how hard I try
    • +
    +
    + + +
    Notice that we always have to resolve the expression inside the innermost parentheses first, in order to determine what input to provide when calling the functions.
    +
    +
    + +
    +
    +
    + + +
    16 - 2 * 5 // 3 + 1
    +
    +
    + +
    +
    +
    + + +
    a = 5
    +b = a
    +
    +
    + +
    +
    +
    + + +
    x = 5
    +y = 7
    +add(square(y), square(x))
    +
    +
    + +
    +
    +
    + + +
    x = 6
    +x = x + 1
    +
    +
    + +
    +
    \ No newline at end of file diff --git a/project.ptx b/project.ptx new file mode 100644 index 00000000..3d45e9ce --- /dev/null +++ b/project.ptx @@ -0,0 +1,57 @@ + + + + + + html + pretext/main.ptx + publication/runestone.ptx + output/fopp + + + + html + pretext/main.ptx + publication/publication.ptx + output/web + + + pdf + pretext/main.ptx + publication/publication.ptx + output/print + + + latex + pretext/main.ptx + publication/publication.ptx + output/print-latex + + + + + + html + pretext/main.ptx + publication/publication.ptx + output/subset + + + + + latex + pdflatex + xelatex + pdf2svg + asy + sage + convert + pdftops + node + file2brl + + diff --git a/publication/publication.ptx b/publication/publication.ptx new file mode 100644 index 00000000..2982e494 --- /dev/null +++ b/publication/publication.ptx @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/publication/runestone.ptx b/publication/runestone.ptx new file mode 100644 index 00000000..43c264e4 --- /dev/null +++ b/publication/runestone.ptx @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/requirements.txt b/requirements.txt index 1051c3d1..30f82a1c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1 @@ -runestone>=3.2.11 -SQLAlchemy>=1.0.8 -jupyterlite-sphinx +pretext == 1.6.0 \ No newline at end of file