For scripts to aid with computation or simulation in cellular automata.

Saka wrote:I would like a script that makes a random nt rule without b2a. I tried this once but had lots of problems so I abandoned it.

Could "random" be taken to mean equal likelihood of ON or OFF output, for each of the isotropic neighbor patterns, for birth and survival conditions? And do you need the rule string to be in canonical form?

-- I suppose Golly 2.9b1 will give you canonical form anyway, so you just have to specify the rule in any valid way. How about this?

`import golly as gimport randomprob = 0.5isotropiclistB = ["0",                 "1c", "1e",                 "2c", "2e", "2k", "2a", "2i", "2n",                 "3c", "3e", "3k", "3a", "3i", "3n", "3y", "3q", "3j", "3r",                 "4c", "4e", "4k", "4a", "4i", "4n", "4y", "4q", "4j", "4r", "4t", "4w", "4z",                 "5c", "5e", "5k", "5a", "5i", "5n", "5y", "5q", "5j", "5r",                 "6c", "6e", "6k", "6a", "6i", "6n",                 "7c", "7e",                 "8"]isotropiclistS = isotropiclistB[:]isotropiclistB.remove("2a") # Saka's instructions...isotropicsetB.remove("0")rulestr ="B"for i in isotropiclistB:  if random.random()>prob: rulestr+=irulestr+="/S"for i in isotropiclistS:  if random.random()>prob: rulestr+=i  g.setrule(rulestr)# g.setclipstr("Original form of rule: "+rulestr+"/nCanonical form:"+g.getrule())`

Seems to make rules that explode in various ways. If you want to take out the B1 birth conditions also, just add a couple more isotropiclistB.remove() lines.

dvgrn
Moderator

Posts: 4415
Joined: May 17th, 2009, 11:00 pm

what if there was a script like ntzfind but with oscillators instead
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

dvgrn wrote:
Saka wrote:I would like a script that makes a random nt rule without b2a. I tried this once but had lots of problems so I abandoned it.

Could "random" be taken to mean equal likelihood of ON or OFF output, for each of the isotropic neighbor patterns, for birth and survival conditions? And do you need the rule string to be in canonical form?

-- I suppose Golly 2.9b1 will give you canonical form anyway, so you just have to specify the rule in any valid way. How about this?

`import golly as gimport randomprob = 0.5isotropiclistB = ["0",                 "1c", "1e",                 "2c", "2e", "2k", "2a", "2i", "2n",                 "3c", "3e", "3k", "3a", "3i", "3n", "3y", "3q", "3j", "3r",                 "4c", "4e", "4k", "4a", "4i", "4n", "4y", "4q", "4j", "4r", "4t", "4w", "4z",                 "5c", "5e", "5k", "5a", "5i", "5n", "5y", "5q", "5j", "5r",                 "6c", "6e", "6k", "6a", "6i", "6n",                 "7c", "7e",                 "8"]isotropiclistS = isotropiclistB[:]isotropiclistB.remove("2a") # Saka's instructions...rulestr ="B"for i in isotropiclistB:  if random.random()>prob: rulestr+=irulestr+="/S"for i in isotropiclistS:  if random.random()>prob: rulestr+=i  g.setrule(rulestr)# g.setclipstr("Original form of rule: "+rulestr+"/nCanonical form:"+g.getrule())`

Seems to make rules that explode in various ways. If you want to take out the B1 birth conditions also, just add a couple more isotropiclistB.remove() lines.

Modified a bit, added seed option:
`import golly as gimport randomrandom.seed(g.getstring("Random seed(any string): "))prob = 0.5isotropicsetS = isotropicsetB = {"0",                 "1c", "1e",                 "2c", "2e", "2k", "2a", "2i", "2n",                 "3c", "3e", "3k", "3a", "3i", "3n", "3y", "3q", "3j", "3r",                 "4c", "4e", "4k", "4a", "4i", "4n", "4y", "4q", "4j", "4r", "4t", "4w", "4z",                 "5c", "5e", "5k", "5a", "5i", "5n", "5y", "5q", "5j", "5r",                 "6c", "6e", "6k", "6a", "6i", "6n",                 "7c", "7e",                 "8"}isotropicsetB.remove("2a")isotropicsetB.remove("1e")isotropicsetB.remove("1c")isotropicsetB.remove("0")rulestr = "B"for i in isotropicsetB:    if random.random() > prob:        rulestr += irulestr = rulestr + "/S"for i in isotropicsetS:    if random.random() > prob:        rulestr += i g.setrule(rulestr)# g.setclipstr("Original form of rule: "+rulestr+"/nCanonical form:"+g.getrule())`

Rule with seed 6 is first with a glider:
`x = 255, y = 258, rule = B2cin3ajqry4cekrw5ceinqr6aeik/S2ceik3aeijn4ackqtw5aikqr6n7e8b2o2bo5bobo2bob5ob2o3b2o4bob2o3b2o2bobobo4b3ob4ob2ob3o3b2o3b2ob2o2b6o3bobo2b3o3b3obo3bobobobob2o2bo4b2obobob2o2b3ob3o2bob4o2b3obob2obo2bob2obob2o2bo2bo3bo2bob4o2b5o7bob2ob2obo2b6obo2bo2b4o5bo2b4o\$2o2bo3bo4bo4bo7b2ob3ob2obob3ob2o3b3o3b4o2bobob2o2bo5bobob4o3b2ob2obobo3bob2ob5o3b5o2b2obo5b2obo2bo2bo4bob2o7b3obobo4bo4b2ob2o2b2obob4obo2b2obob2o2b4ob3ob3o2b2o3b3obobo2b3ob2o3bobo2bobobob2o3bo3b2o\$3o2b2o2bo5b2ob5obob2ob3o2b2o3b3o6bo6bo2bo2b2o2b3ob2o3bo5b3ob8o2b2o2b3o5bo2b3obo2bo2b2o3b2obo3b2o3b3ob2o10bo2bobobo5b2o2bobobo2b4obo3bob5obobo2bo2bo3bob2ob3o3b2ob2ob5ob2ob8ob4o7bob2o\$o2b4o3bo3b8o2b2o3b3obo3b2ob2o2bo7b2obo5b2ob3ob5obob2o2b7o2b2o2bo3b3obo2b4o2bo2bobob4o4b2o3bobob5o2b7obobo4b2o4b6obobobo2b3ob2obo2bobobo2b4o3b3obo2b2o5b2o3bo3bo2b2o2b2obobo3b2o2bo2bo2b4obo\$5obobobo6b2o5b7o2bo3b3ob3ob2obo2bob2ob3o2b2ob2o4b3ob3obo3bo4b3o3bob2o2bobo2b2obobo2b3obo2b2ob2ob2o17bo6bo3b9o3b2ob2obobo6bob5ob2ob2o2bob4o2b4o2bob4o2b2obobo2bob2obo2bo2b2obo7bo3bo\$bo2bo4bo3bobob2o4bobob2o2bo2b4o2bobo6bob4o4b2o2bobo4bo3bo6bo2bob5o2b2ob2ob2obobobob3obo4bob3ob2o2bo2b3ob6o2b2ob6o5bobo2bo3bo4bo3bob2ob8o3b4o3b3ob4ob2o2bob3obo3bo2bo2b3o4b4ob2o5bo2bobobo\$bo2bo3b3o2bo3b4ob6o3b2o2bobob2obo4b4obo4b3obo3bo2b3o2b9o5bobob2o4b4o7bob3ob4obobob2ob3ob2o7bob2o6b2ob3obob2obo2b6ob5o3b2o11bobo2bo4b5ob2o5b4o2bo2b2o3b2ob2o2bo8bo2bo2bo\$ob3o3bobo2b6o2b2ob2obo5b8o3b3o6b2o4b2obobobobobo5b3o2b3ob4obo2b3o2bo2bo5b2o7b2o3b6o2b2obo3bob2ob2ob2o4bob2o2bob3ob4o4b4o3bobobob4obob5o3b2o2bobo4bo2bo2bob2ob3ob6obobob3o2b5o3b2ob3o\$bobob2obobob2o5bobobobo3b2o2bo3bobo2bo3bo4bobobob2o2bo2bo5b4ob2o2b3o4bob2ob2ob6o2bobob6obo2bob2o3bo4b2o2bobob2obo2b4obo2b3ob7o3b2obob3obo3b3o2b3o6b2o2b8o5b2o4bob4ob2o3b5ob3obo4bobo2b3o\$2o3b2ob2obob3obo3bobob2o3b2obo3bobobob2o4bo2b3ob3ob4ob2ob3obob3ob2o2bo2b4o2bob3o2bob2o2b5ob2obo4b2obo2bob2o3b2ob5o2bobobo2bob5obo2b2o2bo2b2ob3o5bo5bo2bo2bobo7bo2bobo3b4o2b3ob4obo2b6o2bo2b3o2bob2obobo2bobo\$2o2b7ob3o2bobobobo2bob2obobo5b6o3b2o2bo3bo7bob2o5bob4ob4o4bob2obob2o2b2o3b2o3bob4o2b3o2b3obob3ob2o3b2ob4obob2o4bo3b4ob3o2b8obob4o2b4o2b3o4b2ob2o2bob2obob2o2b2ob2o2b3ob2o2b2o3bo2bobo3bo2b3obo2bo\$3o2b2ob4o4b2o2b6obo2b2ob2ob3obob2o2bob3o2bo3bo2bob3ob3o2b3ob4o2b2o2b4o2b6obo2b2ob2o3b3obob2ob3ob2o3b2ob4o2bob2o2b2ob4o2b3obo5bobo2b2obobob8ob2obo2b4obo4b2obobob5o2b4o4b5o2bobob2ob2o2b2obo2bo2b3ob2obo\$2obo3bo3b3o3b2obob2obo2b8obob4o3b4o2b2o3b2obo2b4obo2b2o2bo2b2obob2o2b2ob2ob3o2bob2o4b2obob2ob2obobob5obobob2o5bobob5ob9ob2o7bo2b8o2bo2bo2b3o2bobob3obo2bo2b2ob2o3bo4bob2ob3ob2ob2obo3bo2bo2bo2b3o2b3o\$bobob3obo3bo2bobo4bob3obo2bo11b3o2b3ob2o3bo2bo2bo2b2o3b2ob2o6b6ob4o3b5obob3o5bo3bob2ob3ob2obobo2bo2b6o2b2o3bob3obob2o3b3ob3o3bobo6b4o2bo3bo3bo3bo2bob2o3b2obobobo2b4o2bob2o2bo2b3ob3obob2ob2o2b2o\$2bobob2o2bo4b2obob2o3bobo2b3o2bo3bo2b2o4b2o4b2ob4ob3o6b2obobobob3ob2obobo2bob10obo4bo2b2ob3o3b4o3bo3bob4o2b6o3bo2b7o2bo14bo2bo2b2obobo7b4o3b2o2bobobo2b2obo3bo3b3obo2bobobobobo5b2o3b4o\$2obo3b4o5b2ob3o6b5o3b2ob2o2b2obo3bo4b3o2bo4b3o2b8obobobob3o4bo2b2o2b5ob4obo5bobob4ob4o4b2ob2obo2bobo3b4o4bob4o2b5o2bo3b2ob3o2bo2bobobo2bo2b3o3bo2b2obobo2b2o2b2obob2o2bo4bobob4obo2bo2b2obob2obo\$ob7o3bo3b4obo2bo4bo3b2o2bobob4o2bob2obobo3bo2bob4obo4bo2b4ob2obo3b2o3b2o3bo3bobo3bobob4obo3b2ob4o4bob2ob2ob7ob4ob2ob3o2bo2b2o4b2ob2ob2o3b2o2b2obo2bo4b7obob6o2bob3o2b3ob6ob6o4b5o5bobo\$obob3obo3bo2b3o2b2ob3o3bo7bo2b3o2b2obo4bo2bo4b3o2bobo3bo2bo2bobobo5bobob3o3bobob3o2b3ob2o2bo5bobobobobo4b4ob2obo4bob3obob6obobo4bo2b3o4bob3ob2o2b2obo2bo2b2ob6ob3obo2b2o2b3ob2o2bob2o3b3o4b2o4b2o2b4o\$2o2bob5o5b3o3bob2o3b5o3b6o2b3obob3obobobo3bob4ob3o3bobobo4bobob5o2b2ob2obo3bo2b2obo2bobob3obob2o4b2ob2o2b3o3b2o6b2ob3ob2o4bo2b2o3bo2bob3o4b2o2bobo3bobobo2b2ob5o4b2obo2b2o3bo3bo5bo3b2obob2o2b4o\$ob6o3b3o2bobob3ob2obo5bob4obo2b3obobob4o2bo2b4obobobo2b4ob2o3bo3bo3bo2b2o3bo3bobobo4bo4bob5ob2o4bobo2bobobo2bo6b2ob3ob2o3bob2o2bo2b2o3bo2b4ob8o6b3o2b4o3bo5b2ob4ob2o5b3ob3obob6o2bobob3o\$o3b2ob2ob2o2b2o2bobob3obob3o3bo4b2obob2ob2o4bob2o2b2ob6obo3bo4b2o2bo2bo5bob4o3bobob3obob3obobo2b3o2b6o2b4o4b2obo3b2o5bobo2b4ob2o4bo4b3o3bo2bo2bo3bobobo2b3ob2o3bo2bo2b2o2b2obo4b2o5b2obo4b2ob3ob4o\$ob2obo6bo2bob5obob3o3b5ob2o7bob13obo5b4o2bo2bo3b2ob5ob4o3bo4b3o3bobobob2ob2obo2bob5o6bo5bo2bo3bo2bo2bob2o2bob3o3b2ob3o4b2o2b3ob2o10bo7b2ob2o3bo4b2o2b3obob3o7b6o2bob2o\$4bob3o2bob2ob2ob5ob3obo2bo2bob3ob2ob2ob2o2b4o4bobo7bo5bo2bob2ob2o3bo2bobobobo2bo3bo2b2ob4ob2o3b2o2bo4b4o3bob2ob5ob4o3bobobob2o2b2ob2o6bob2obobo2b5obob3o2b4o3bob2ob4o2b4obobo2bo5b3ob3obo2bo4b6o\$2obobo2bo2b3obo3bobo2bobo3bo4b2ob2o3bo2bob2o3bobo3b2o2bo4bobob2ob3obo4bob2obo2bob3o2b2o2bobo2b4o4bobobo8bo2b2o2b6o3bo3bo3b4o2b3o2b2o2bo4b3ob6obo7bo2bo2bob3o2bo9b2o2bob4obobobo3b2o3b2obobo2bob4o\$2bob7o2b4o3bob2o2b2ob2ob2ob4obo3b2o3bob2o3bob2o5bob2ob6o6b3o2bobo2bobo2b3o3b3obo2bo2b3o3bo4bobo3b2o6b2o2b3o3bobo2bo5bobo2b2ob2ob2ob3o2b2o3b3o3bobob2o2b2o3bob2o2bo2b3obo3b4o3bobo3b3obobobob3ob5o\$b3ob2o2b2obo4b2obobo3b3obo2b2obo3b4ob4o2b2obobo2b4ob2obobo3b3ob2o3bobob2o5bobo2b5o4bobob2o2b4ob7ob3obo2b5o2bob3o2bo2bo2b4o2b3o2bob2o3b2obobo3bob2o3b4obo2b2ob2o2b5ob2o5bob2o2b3o3b2o3bob3ob2o3bob2o2bo2bo\$bo2bob4o3bobo3b5obobo2b3o2b2o2b2ob3ob2obo3b2o2b2ob3o2b2o2bobob3o3bo2b3ob5obo3b2o2b2o2b3ob3obobob6ob4o2b4ob2obo5b2ob2o4b5o5bobo7b2obob3o2bo2bo2b2o3bo3b4o2bo2b2ob3obobobobobo2b3o2bobob2o2bobob2obo4bo2b3o\$3o2b2ob2obob5o2b2obo2b3ob3o3b3o2b3o2b3ob2o5bo2bo3bobob4obo3b9obobob2o2b4o4bo2bobo3bo2b3o3b4obo2bob7o3b6o2bob3ob2ob6ob3o2bo2b2obobobo2b3o2b3o5bo2b4o9bo2b2obob3obobo3b2o3bobob2ob7o5bo\$b5o2bob7o5bo3b3obob3o5b3o3bo5b3ob2o5bob3o2bo4bobo3bo2bob3ob4o3bobo4bo3b2ob2o2b2ob2obo2bo2b3ob2ob2o3b6ob3obobob2ob3o2b2o2bo2b4ob3obo2b2ob2ob2o7b2o4bo3b2obob2o2bo2b5o2bo7b5o2bo2bobo2bo3bobo\$4b2obo3bob2obo2bobobo3b4obob2ob3o2b6ob3ob6o2b2ob2o8b2obob3ob4o2bo2bo2bo2bo3bob3obob2o5b2o5bobo2b2o2bo2b3obo3b3obobo3b2ob6o3b3obo2bo2b6o4bo3bo3bobob5obob3ob2o2bobobo2bo4bo2b2ob4ob5obob2o2b4o\$o2bobo2b2o2b3o5bobo4bo3bobobob2obobobob3ob4o2bo2bobo9b4obob2o2bobo2bo4bob2o2b2o2bob2ob2ob2o2b7o2bob4ob2obo2bobo2b2obobob2ob2obobo4b2obo5bobo3b2o5bo4bo2bo2bo3bo2b3o2bo3bo2b2obo2bob5obob2o2b2o5bo4bo2bo2bo\$3b7o3bob2o2bo2bob2ob4ob6o2b2obo2bob2o3bo3b2ob6obob3o3bob2o2bo3b2o3bobob3ob5o5b2o4bo6b3obo2b3o2bob2o2bobo2b2o3bobob3obo4bo2bob5o2bo4b3ob2o5b2ob2o2b3o2b2obob3o3bo4b6o2b4o2b2ob3ob2o4b2ob2o2b2o\$5obobobo2b3o2bo2bo4bob2obobob2o2bo2bobo2bo2bo2b8ob3o4b3o4b2obo3bob6obo8b3o3bob3ob3ob6obo2b2obobobobo4b2ob6o2b2o2bo5bob2o2bob2ob2o2b6o2bob5obo2b3ob5obob2o2b2o2b3obob2o3b2o3b3obobo2b4o2b4o\$2o2bo3b2obobob3o4bobo3b2o2b2o4b2o3b2ob5o2b5o4b2ob3ob4obo3bo2b3o3bob2obob5o2bo3bob3ob5obo2b5ob2obobobo2b3obobo2b2o3bo2bo2bobo4bobob5obob2o3b3obo3b2o5bob2o2bob2ob3o2bo2b2obob2o3bobob2o3b3o4b2o3bo2b5o\$ob4o2bob2obo3b3o3b2obob2obo2bobobob2o2b3o2bobobo3bob2obob4o3b3o2b3obobo2bo6bob3ob2o6bob2obo2b2ob3o3b2o2bobob2o3bobo2bobob2obo4b2o2bo2bob8ob5o5b4o2bob2o4b2o4bob2o3bobobo4b2ob2o6bo3b2ob3o4b2o2bobo3b3o\$bobob2o2b2ob4o2b2o2bob4o2b3o2bob7obob3ob3o3b5obo3bob3obob3o3bo3b2obo2b2obobo3bobo2bo2b3o5bobo2b8obob3obob3obo2b4ob2o4b3o6b3o2bobobo13b2o4b3o5b3obo2b2obobo2b4o2bobob2obob2obobo2bobobo3b2o2b2o\$3bobobo2bo2bobo2b4obob3obob2obo3b2o2b5obo2b5ob2ob3o2b2o2b6o3b3o2bo8b3obo2bo2bo4b2o2bob2obob2ob3o5b2obobo4b2obob4o3bob3o9b3obob5o2bob2obo8b2obo2bobobo5b2obobo2bo9b2o2b3o2b2o2bob2o2b2obobo2b2o\$2o2b3obobobob8ob2obobo4b5obo2bo4b2o2bob2ob2o3bob2o2bo2bobo5b2o5bobob2ob5o2b2ob7ob3obob5ob3obo3bo3b2o3b2o2b2o2b2o2b4ob5o3b3o2bobob4o2b2o2bob3o4b6ob2obo2bo2bobo2bob3o7b3ob3ob3obob3o4bo2b6o\$3o2bob3obob5o2bo2b4obob2o2bo2b3o3bobo3b3o2b2o2b2o2bob2obob3ob2ob2o2b2o2bo2b4o2b2o5b2ob4ob3ob2obo6b4o2b4obob3o3bobo3bo2b5o3bob7obo6b2obobo2bob2o4bo2bob4o2b3o2bo5bo2bo2bo2bob2ob2o4bo2b2obobo2b2ob5ob2o\$4obo4b2obo4bobo2b2obo2b2o4bo3b2obo3bob2o3b2obob2obo2bobo3bobo4b4obob3ob3obo5b2obo6b6o4b2o2b2o2bobo3bo2bo2b2ob2obo3bobo3bob4o2bob2obo6bo2b2o2bo2b2ob4o2b2ob4o2bo3bob2o5b2o4bob2ob5o2b2o2bo3bo4bo2bo\$bo2b3o6bobo3b2o2bobo2bob5o2bob4obobo2b2ob2o3bo2bo3bob2o2b2obo2bob4ob3ob2o2bobo7b3o4bo3b2o2b2o2bo2bob2obo2bobob3o3bob4obob3ob2obobo4bobo4b2obob3o2b3o2bob2o2bob7o2b2ob4ob2ob2ob4ob3obob4ob3o2bobo5b3o3b2o\$bobo2b2obo3bo3b2ob4o4bo3b2obo3b2o2bo2bo2b2ob3o2b3ob2ob3obo2b2obo2b2obobo2b5o3b2obob7o2b2o2b3obo3b2o2bo4bo2b2o2bo2b4obo2bo2b4o2bobob4o2bo4b4o2bob4o2bob3o2bo2bo2b3ob4o5bo2b2obo3b5ob2o3b3o2b2obob2o2bo3bo2b2o\$2b5obo4bob5obo3bo4b3ob2o2bob3o2b3ob5obob3ob2o3b2ob2obob4o2b4o5b4o4bob2o2b8o2b2o2bob6obob4obo2bo2bo3b5ob3ob2o6b4o3b2o2b2o2bob2o2b4o3bob2obo3b3ob6o2b7obobob4o4b2o7b2o2b2obo2bobob2o\$ob2o3bobo2b3o4bob6o3b3o3bobobo3b4o3bo3b2o2bo4bob3o5bob6o7bobo2b3ob3ob2ob7obob3obob6ob3o5bobo2bo3bo3bobo2b2obo3bob2o3bobo5b4o5b2o3b2o2b2o2b2ob2o3b2o4b2ob2o3bo7b7o4b4obo2b3o4bo\$bob2obo2bob3o4b3ob2ob5obo2bob2o3b3o2b3obobob2o2bo3bo2b3obobo4b2o2bob2obobobobo3bo2bobob4o6b2o2bob2o2b3o3b4obobo2bobob3obo2b9o2bobob2obo4bobo2bo4b2ob4o2b3obobo5bo2bo2bo3b2o2bo2b3o2b7obobob2o6bo2bo2bobo\$6b3o5bobob2ob2obo2bob5o2bobobo3bob2o2bob2obo2bo2b2ob4o3bobobobob4o4bo3bob2o7bobob3o4bobo2b2o2bob4o2bob2obo2bob2ob2obob3o4b3obob2obobo3bo2b2o2b2obobo2bo4b3o2b3o2bob4obo6bobobobo2bob4o3bob2ob3o2b3ob2obobob2o\$b3obo3bobo2b4o2bo2bo2bo2bo7bob2o2b2obob2ob2o2b4o3bo3bo3b4o8b2ob6o3b2obo2bob3o7b2o2b6o3b2obo3b3ob2o3b2o2bo3bobo2bo2bo7b3o6bo2b5ob8o2b2o2bob3o3b3ob3o2bo6bobo2b5o2bo2b3o2bobobob2ob2o2bo\$b2ob2o4bob2o3b3o4b2obo2bo2b5ob3obo4b3obob2ob2o4b2ob2o2b4obo2b4o2bob2o2b2ob2o2bo4b3o4bobobo4bobob4obob4o2bo4b3obob3obo3bobob3obo3b2o2bobobobob2o6bob2o5b4o3bob2ob9o2bo3bo2b7obo5bob2o2bo5bo\$b3o2b3o2bo2bob2obobo3bo3bo3b5ob3obo2b2o2bobobo3b2obo4bobobobo2b3o4bob2o5b3o3bo2bo3bo2bo2b5o3b4o2bobo5bobo2bo5bo3bob2o4bo4b5o2bobo2bo2bobo2b3o2bo2bo2bob6ob4obob3obo2b2o3b2o3bo5b2obobob2obob3o2b2o5bo\$ob2o2b2ob2o3bob3obob2o3b3obob3ob4obobo3b8o5b3ob2ob3obo3b3ob2obo2bob2o3bo4bobo3bob4ob3o2b3o2b2o3bo2bo5b4obo8bobo5b5obo4b2o3bo3b3o2bob5obob4ob2o2b2obobo4bo2bobobo4bobob2o2bo4b3o2b2o6b2o\$o4b2o4bo4b4o2bo3bo3b2obo2bo3bo4bo2bob2o2b2o3bobo11b2obo4bo5b2ob3o3bo15bob3o3bo2b3o2bo2b2obo2b5ob2o3b4o3bo3b2o2bobobo2bob2obob2obo2b4obob2o2b3obob2o3b3o4b2o3b4ob3obo2bob2ob3ob2o4b5o2bo\$3obo2b5obo3b4obo2bo3b2obo2bo2b2ob4o3bo3b7obo2b2ob4o3b3o3b2o2bob2o2b4ob3o5bobobob2ob2o2b3o2bo2b3o2bo5b5ob3ob4o3bob3o2b4obo5b2o5b3ob2obobo5bo2b2obobobob3obob4o2bobo2b4o2b4ob2ob3obo3bob2o7bo\$bo3bob6o3bobob3obo2bo4bob3o2bo2bo2bo3b4obo5b4obob2o4b2o2b2o2b4o2bob2o2b5o2b3o2b2o2bo2bob3o2bob4obob2obo6bob2o3bobobo3bo2b2o3b3ob4o4bo2b3o2b2o3b2o3bo2bo6bo2b2ob2ob3o3b2o3b2o4b3obob7o2b3ob2obobobo\$bo3b2ob2o9bo2bo3b2o2b2obo3bo4b2ob2obo5b2ob2o3b2o2b3o3bobob2obob3o7b2obobo2bob2o2b2obobobobob5obobob2o2bob3ob3o6b4ob3ob2ob2o3bob2ob2o3bob2obo2b2ob2ob2ob2o2b2ob2ob4o2bobobob3o2b2o7b3obob2obob3obob5o2bo4bo\$2b4o2b4o2b2ob3o4b3o4b2ob2obo2b2o2bo2bobo2b3ob2ob2ob2ob3ob3o3bo3bobo2bo2b2ob2o4bob2o3b2o2bo4b2o7bo3bo2b2ob2obob2ob4obo5bob2o2b4o2bo2b4o2b2obob5obobob2obobo4bob2o2b7o2bobo2bobo2bo2bo6bobobob4o3bobob2o2bo\$2bo2b2o3b3obobo4b4ob4obo2bob4ob3o4b3ob2obo2b2o3bobob2obo3bo2bo2bo2bobo4b7ob2o2bo4bob5ob2obo2bobobob2ob2ob2obobob2ob2o4bobo2b8o2b2o3b2o2b6o4b2obobo3bo3b2o2bob3o3b2obo2bobo2bobob3ob5obob2ob2obob3o3bob2obo\$obo3b5obobo4b2o2b2ob2ob2ob6o2bo4bo2b3obob2o2b8ob6ob3o2bo4bo2b3obo2bobo2b4ob2obobo3b3obobo2b2obo4b3ob4obob5o9bo3b2obo2bobo3bo2bobob2obo4bob2o2b2o3bo5b2o2b4o3bo2b2ob5ob2ob2obob6obob3o4b4o\$obo2b4o4b2obob3o6bo4bo4bo2bob2ob2obob3o3b2ob3obo3b3o4bob2o2bo2b4o2b4obob2ob3o4bo8b11ob2obo7bobobobob2ob2obo2bo2b2ob2o3b3o4b3o4b10ob2obo3b2obobo3bo3b5ob5obob4o2bo4b6o4b4o4bo\$2obo3b7ob4o6bobo2bobo2b2o6bo3b3o4bo2b5o3bobobo4b2ob2o3bo4bo2bo3b2ob3o4b3obob2obob2o2bo3bo2bobo2b5ob4obob2o2b2o3bo2bobo2b2o2bobo3b3obo5b2o2b7obo6bo5b2o2bo7bo2b3o4bob3o5bobo2b4o5b2o\$5obo3b2o3b2ob2o3b3ob4o2b2o2bobobob2o2b4obob3ob7o5b3ob4obob4obobo2b2o3b3ob2o2bo3bo2b3o3b2o5b6ob2o3bob2ob3obob3obo3b2o5bob4o4bo7bobo2b3ob3o2bob3o2b4o2bo3bobo2b5o3b2ob5o2b2obob2obo3b2o4bo\$2o2b4obo2b3ob2o2bob4o2bo2b4obo3bob4obo4bo2bo5b4ob2o3bo2b3o2bo2bo3bobobob10obobob2ob2o2bo7b2o4b2o2b2ob5obo2b2ob3ob2obo2bo4b3o2bob4o4bob2ob2o2b3o2bob3o2b2o2b3o6b2o3b2ob2ob2obo6b4obo3bo4bobo2bo\$o3b2obo4b3ob3o4b3ob5o2bob2obo3b2o2b2o3b2o2b4ob2o2b3ob2o8b3o2b2o2bo3bo5bobo3b2ob2o6b2ob3o5b2o3bob2o2b15o4bo2b2ob3o2b2o4b2o4bo4bo4b3obo2b3o2b3obo3b2o3b2o2b2ob2o3bo2bo4b2o2b4ob2o5b2o\$bobob2o2bo7b4obobo2bob4o2b7o4b3o6bobobobo4b4o2b2o2bo3b2ob2obo2bo4bo4b2o3b2o4b3o2b4o2b2o6b2o4b2o8b2o2b2ob5ob2ob4obo3bob3o3b3o2b3obo2bob2obob4obo2b2ob3o2b2o2bo2b2ob4ob4o2b3o2bo2b3o3bo3bo\$o2bo4bob3o2bobobo3b5ob4obo3bo4b7o2bo2b3ob2o2bo3b3ob2o3bo3b2o2bobobob4obo2b3o2bob2o2b2obobob2o2bo4bo3b4o2bobob3ob5ob3o2b2o3b4obobo2b2o3bo2bob2obob2o2b2obo4b2o2b2o2b3o2bob2ob4ob5obo2bob4o2bobob2o3bo2b3o2b2o\$obobo2bobobo2b3o5b2o2bobo3bo3b3obo5b2ob2o5bo4b2o8bo4bo3bobo2b2ob3o3b2ob3ob4o2b2o2bob2o3b3ob2obo2bo2bobob2ob2ob2o6bob2obo4b3o4b4obob7o2bobobo3b2o7bob2o5b2o4bo2bo4bo3bobob5o3bobo2bobob4obobo\$ob3o5b6ob3obo3bob2ob2o2b2o2bobob3ob2obo2b3obobo2b2ob3o3bob2obo2b2o4bo2b3o4b2o6bo3bob2o2b4ob3o7b3obo2bo4b3o3bo4b2o5b2ob2ob2o3b2ob2o2bo2bo6bob2o3b4ob2o2bo3b3o3b2o3bo2b4obo2b6o5b2o2bo2bo2bo3bo\$3bo4bob2obo2bob2o2b3o4bo2b5o3bo5bobobo2b3o2b2o3bo2bob3o4b3ob3ob2o3bo2bo2bobo2bo2b2obo3bob2o5b2obo3bo2b6o3b2ob4o2bob2ob4obo2bo3b2o2bobob2o3bo3bobo5b3o2bo3bob3ob3o3b2o3b7obo3b2obo6bobo3b3o4bo2bo\$ob2ob8ob4obo2bo3bo4bo2b2obo2bo2bob4obob2o3b2o2bob6o2b2obob2obo6b2ob3ob2o3b4obobobob2ob2o3bob4o2bob3ob2obob2obo2b2obobo6bo4bob2o2b2obob3obob3o2bo3b3o5b3obo2b4o2bob4obobo2bob2o5bob2obobob3ob3obo3bo4b2o\$o5bobobobo4bob2obo3bob3obob6o5b2obo3b3ob3ob2ob2o2bob2ob5o2bo2bob3obobo2b3o2bo4bobobobo4b3ob2o2b3obob2obo7bo2bobob2o3b3ob2ob5o4bo2bo3bo2bo2bobob2o3bobo4bobo3bo2b2obo2b2o2b4obob3ob2obo2bo3bo3bo2b4o4bo2bo\$4obobo2bobo2bo4bob4o3b3ob3o2b5o2b3ob2ob3o3b2obo5bob2ob3obobo3bob3o2b3ob2o2b2ob2ob6o5b2o3bobobob3obo2bob2o2bo5bo2b4ob2ob2obo2b4ob3ob4obob2ob2ob2ob3o2b2o3b4o4bo5b2o4bo5b3o2bobob2o3b3o5b2o3bo\$2bo2b2o3bo5b2ob3obo4bob5o3bo3b2obobobo3b3obo5bo3b4obo2b3o5bob4o4b3ob2o2b8o3b2obo2bobobo2bo2b4obobo2bobob2o2bobobobo2bob2ob4obo2b2obo4bobobob3obo4b2obo2bob2ob4o5bo3b2obo3b5ob2ob9obobob3o3bob2o\$o4b2obo3bo2bo2b3obobo3b3ob2o2b3obob3ob3o5b3o2bob2o3b2o2b2o3b2o2bo7b2o2bobo2bobobo2bo2b3o6b2o3bo3b2obobobo3bo2b2o2bobo3b4obob2o3b3o4bo2bob4o2bo3bo2b2ob2obobobo2bob2obobobo4bo2b2o2b2ob3obo2b2o4b2ob2o2bobob2o3b3o\$2obo2b2o3b2o3b6ob2o10b2obobob8ob2o2b4obo2bob5obob2ob2o2bo3b2o2bobob2o2bob2o2bo3bo2b3o2b2o3b2ob4ob4o2b3o2bo2b3ob2o3bob3o2bob3o2b2obob3o3b2ob3o2bob2o3b4ob4o3bo2bo5b8o2bob2o6bobo2bob6o7bobo\$2bob2o4b3ob2o4bo3bo2bobo7bo4bob2o2b2obobo2bobo8bo2b2ob6o2b3o2b2ob5o3b4o2b2o4bo4bob2ob2ob2o2bob3obobob3o6bo2bo3bo2bo10b5obo8bob4ob3obo2b2o2bobo3bob3obo2bo2b2obo3b2o2b2o2b2o2b4ob5ob2ob2o2bo\$ob3o2b2ob2o5bobo3b2obo3b2obob3ob2o2bob3o2bob6o2b9o5b2ob2o2bo6b2o2b4ob2o2bob2o2bobob2obob2obo2b7o3b3o2b2o3bo5b3o4bobo3b2o2b4ob2o4bob2o2b2o3bo4b6obo2bobob5ob2ob2ob2ob2o2bo5bob2o2bo4b4o2b4ob2o\$3ob3o2b2o4bo2b2o2b3obo2b3obobo2bo4bo2b4o4b2obo2bo13b4o4bo5b3ob2o3b2obob2ob2o2b2obob2obo2b2obo2b4o2bo2bo3b2o5b5o3b2ob4ob2o4bo4b3o3b2ob5o2b2o6bo2bobob3obo2b2obo3b2o3b3o5bo3b3o2bo2bo2bo3b3obo\$2o2b2o5b3ob2o2b3obob2ob2o2b5ob2ob2obobo2b4obo2b5o2bo3b11o3b3ob2o3b2ob4ob2o2b2o4b2obo4b2ob2o6b4ob6obo3b3o2bob3o5bo2bo3bo2bo3b4o2bo2b3obobo3b3o2bo2bob5o3b2o2b2ob2o2b2obob3o3b2obo3bobo2b3o2bob3o\$bobobo7b2o2b4o7b2ob3o3b2obobo2b3o4bo6bo2b2ob3o5b2o2b2o4b2o6bob3o2bobo2bo2bob3o2b2ob6obo4bob2ob2o6bobobob2o2b2o2b3o2b2o2bo3b3o8bo2b2obobo4b3o3bo5bo2b2o4bo2bob5o2b2ob2obo3bobobo2b5obobob3o\$3ob4o2b2o6b2o2b3obo2bo2bo5b2o2b3o3bo2b2obob3obo3b2obo2bob2o2bo2bo4b2ob2ob2o2b2o2b2obo3bo2bob5ob3ob2o4b2o2b7ob2ob2o3b2ob2obobobo2b2ob4obob3o3b2o3b2o6b2obobo8b3ob4ob2o4bo2bobobob2o2bob2o3bobo3bob6o3bo\$3b2o2bo3b2o2bo2bobo2bo3b2o2b3ob6ob8obo3bo4bo2bob2ob2o2bob9ob4obo2b2o6bobob2o9b2o3b3ob3o3b7ob3o3bo2bobobo2bo6b3ob3ob6o2bo2b3ob2o3b3ob2o3b2o2bo2b3ob3obob2ob2obob2o3bo2bob3o2b2o4bo2bobob4o\$ob2obob2o3bo2bo5bo2bobo2bo3bob3o3bo2b2obo3bobo2bobo6b2o4bo3b3o3bo3b4obobo5b3ob4o2bob2o2b2obobo9b3ob4obob2o2b2ob2obo2bob2o3bobo3bob2obob2obob2obob4o3bobobo2b2obob2o2bobo2bob2obobob4ob2obo3bobob4ob3obobo2b2obo\$b2obo3bobo2bobob6ob2ob2o4bo2b3ob5obo2bobo3b5o3bobo3bob2ob2ob2o3b3ob3ob2obob4ob2ob2obob4ob2ob2o2b2o3bo2b3ob2o2bo6bobob3o3b2ob3ob2o3b3obo3bob3obo2bo3bobob3ob2obo2b2ob3obo5b4ob2o2b4o2bob2obo4bo2bo2b4o3b2obo\$obob2o2bo2b3o2b4ob3ob2o2b4ob2ob2obo2bo3b2o2bo3b3obo4b3o2b3obob2obobo5b2obobo4bob4o3b3o7bob3o2b5o2b3o4bo6b2obobobo2bobo7bob2ob2o4bo2b4o2bobo3bobo5b2ob10ob2o3bobobo2bo2b2ob2o3b7ob2obo4b2o\$bo2bobob2o2bo2b4o3b2ob2obobo2b3obobo3bo2bo3b2o3b2o2b2o4bob2obo4b2obobob7obo2bob4o2bobo3bo2b3o2b2obobo3b2o2bo3bo5b11obo3b3ob2o2bobob3ob2o2b2o5b3obo3bobo2b5obo3bobob3ob2o2bob8obob2ob4o2b3o2b3ob5ob2o\$2ob3obobob6o2b6o2b4ob2obo2bo4bo2bob2obobo5b3o2b6o2b5o2b3o2bob8obo2b3o2b2obo3b2ob3o3bo2bo3bo2b2obo2b2obo4b2o6bobob3o2bobobobob2ob4ob5obo4b2o3bo4b4ob2ob2o2bo3b2obobobo6b2o2b2obo3b4obo4b3o3bo\$2o2bo6bo2b3obo7b5o2b2obobo2b4ob2ob2o3b4o4bob4ob2o2b3ob5o5bo6bo2b3ob2o2bob2o4b3ob4obo2b3obo2b2obo3b2obo2bob2o3b3o2b4o5b2ob3o3bob2o2bobob2o2bobob4ob3o6b4o4b3ob3obo2b2o2b2o2b2ob2o3bo4b3o2b3o\$o4bobobo5bob3o2bobob3o2bo2bo2bo5b4ob2o4bo3bob2o2b2ob2o3bo2bobob3ob5o4b2o6bo10b2ob2o4b3obobobo6bobob3o5bobo2bob2obo4b2ob4o2bobob7ob2obo2bobobob4o4bobo2b2obob4ob4o2bo2b2o4bob3obo2bo2bob3o2bo\$3o2bobobobo2bobo2b2o2b2o2bobo5bob4ob2o3bob4o3bob3ob2ob3obo2b2ob3obo2bo2b2ob3o2bo3b3obobo2bobo4b2o2b2o3bobobo3b2ob4ob3o6bo4b2ob6o2b2o3bo3b3o2b2ob2obobob2o2bo3bo2b2o3bobo3b2obo9bobob2o4bo4b3o2b9o2b2o\$2b2obo2bobo2bob3ob6obob2o3bobo3bo2bo2b2obobobo7bo2bobobob6obo6bo3bo3bo2b3ob2obob2o6bo2b2o2bo3b2o2bobo3b2obobob2o2bobo2bobob2o2b6o2bo6bo2bo3b8obob3o3bobo3bob2ob3o4b2o3bo4b3ob4o8bo2bo2b3ob6o\$b4obob2obo2b2o3bob3o3bob3ob4o3b3obo2b2o3bo2bob2obobo4b4o3bo4bobob5obob2ob2obobobo3b3o3b4obob3obob2o2b2obobobo2bob5ob2o3b2obo6bo2bobo3bob5o2b3obo3b2o3b2o2bo4bo2b3obobo4b7o2b4o3bo2b8obobo3bob4o\$2obobobo2b4obo2b2o2bo3bo2b2ob6o2bobob2obo3bobo5bo4b4o4bo2bo2bo2bo4bo4b3ob2ob6ob3o2bo2bo4bob2obob2o3bobob6ob3ob4obobo6bo5bo5bo3b5ob2o3b3o4b4o4bo2bo2b2o6b2ob4o2b2ob2ob3o2bo2b3o4b2o2bo2b3o\$4o4b2obo2bo4bo2bo2b2ob5o2bobobob3obobob2o2b2o3b3ob3obo4bo2b7ob2ob3o3bob2o2b2ob2o2b2obob5ob7o2bobo5bobo4bobobo3b5o3b3o2b3ob4ob2o3bob2ob2ob4ob3obo3bob2ob2ob2o2b3o4b2obo7bo5b3ob4o2b6o2b2o2bo\$ob3obo2bobobob5o3bobo2bob5o3bob2o3bo2b3ob2ob9obo2bobo2b2ob2obob3o3bo5b2o4b2o5bo2bo2b3obobobo3bob3o2b3obo2b4o4bob2o2bobo2bo3bob3obo2bo2b3ob2o3bo2b4o3b3ob5o2b2ob5o2b5ob3o4bob3ob3ob4o2b2ob2obo4bo\$2o3bo7bo6bo2b3obo2b2o2b2ob2o2bob2o5b2o2bobob2o3b3o2bob3ob3o2bo2bo2bo5b2obobo3bo3b3o2bo4b2ob2o6b3obob2ob2o4b3obobobo2bo6bobob3o4b7o2bo2bo3b4o3b2ob2obo2bo2bo2bob2ob3o2bob2ob3obo2bo2b4obobob2ob3o3b4o\$2bo2bobobo2bob2obob2o4bob2o3bobobobobobo2bobobo3bob3o3b2ob2obo5bobo2bobobo4b2o7b2o3b6o3bo2bob4o3bobo2bo3b3ob3o3bob5o6bobo2b2obob3o4b6ob2ob3o4b2o2bo3bo2b4o2bobo5bobobob12ob2o5b2o2b4o6bo\$2bobo3b2ob2ob3o2bob4o6bo3b2o6b5ob2o3bobo3bo3b2obob2ob3obobo4bo3b2o4bo2b5o2b2ob2o8b4o3bobo2b4ob2ob2obob2obo2b2o2b2obo2b3ob4o2b4ob3o2bo4bobob5o2bo2b2obobobo2b4ob3obobo3bob2o2bob3o2bo2bo3b2o2b2o2b3ob2o\$2bo2bo3bob2ob4o2b2obob2obo2bobo2b3ob3ob3ob3obo3bobo2bo3bob3o5bobo4b3ob2ob2ob2o4bo2bobobob2obo2bobo2b2o2b3obobobob2obo3b3obobo2bo3bo2bobo3bo3b5o5b2o5b2ob3obobobob5ob2ob4obob2obo2bob8obob2o3b2o2b4o2b4ob3obo\$ob3o3bobob2o2bo11bo2bob3o3b4o2bobo2bob4o3bob2ob3o2bo6bobobobo2b2o3b3o4bobobo2bo4b3obo3b2o2bo2b4o2bobo4bo5bobob4obob3o2bo2b3o2bob2o2b2o6bo3bo2bo3b3ob2o2b4o3bo2b2ob2ob2obo3b3obobobo2b2o2b3obobo3bo3bo\$b2obo2b2ob2obobo3b2ob2o7b6ob3obobob3o3b5ob6o2b6ob2o4b3o6bob2ob4o2b5o2b2o2b3o3bobob2o3bobo4bobobo3bobo4b3ob2o3b2o2bobo2b4o3b2o10b2obob2o3b3obobobo2b5obo3bobob3o2bob6obob3obob4obo2bob2o\$bo6bo4bo3bo3bobo4b4obo5bob8o4b3ob4obob2obo3bobo6b2obo2b6o3b2o5b5o3b3o2bob2o7b2obobob2o2b3o3bo3bob4obo3b8o3b2ob6o4bobob4obob2o3b2o2bo2b3obo3b3obobob2o5b2o2bobo4b3o2b2obo5bo\$2ob3obob2o2bo4b3obo2bo3bobo2b2ob5obob3o2bobobo3bobo2bo2bob3o2b6ob2obo4b3obob2ob3o2bo3bo2bob2o2b2o4b2o2b2o3b4o5b2obo3bo4bo2b3obob4obob3o10bob3o2bobobobo3b2o2bobob5o3b2ob2obobob2obo3b6obo2bo2b2o2b3ob2o\$obob2obob2o5b5ob2o3b4o3b3obob2obo5b6o2b2obobob4o7b5o2bo2bo5b3o5b2obo2b3o11b2ob4ob3o3bobo2bobo2bo3b2ob3obob3o2bob2o2bo2b3obo2bobo2bo4bo2bobo2b3o2bobo4bo2bobob4o3bob4obo4b2o6bobo5bob2obo\$o2bo6bo3bobo2bo2bob2obo2b7o2bo2b3ob2ob4obob3o4b3ob2obobo3b3o3b3o6b2o2b2ob4obo3b2o3bo3bob3ob2o2bob2obo2bob2o2b2ob4ob2o2bob2o2b2o4b3o3bob2o3b3o2b2o2bo3b8o3b2o4bo3bob3obobo2bobo6bobobo2b4ob3o5b2obo\$o3b3ob2o2bob2o2bo2b2o2b3o3b6o6b4o2bobo4b2obo3b2obo2b6o2bo2b2ob2o2b4o2b2o2b2o4bo2b3ob2ob5ob4ob4ob2obo3b4ob4obob4o4bo2b2obobo2bo2bob3o5b4obobo2b2o2b4obo2b2o2b4o2bob3ob4ob2obo2b2ob2obo7bobob2o3bobo\$bo2b2ob6o2b2ob2obo3b2ob2o3b4ob4o3bo2b2obob2obo3bob2obo2b3obo2bobobobo2bobo5bo3bo4bob2o4b4obobo3bob4o2bo2b2o5bo2bo3bob2ob2ob2obo2bo8b2o2bob2obob2o4b2ob4o4bobob3ob2o2b2obobob3obob3o3bo2b4o3bob6obo2b6o\$4b2ob3ob2obob2ob3o3bob3o2b3ob2o2b2o2b2obo2b2o2bo2b2o2b4obob6o4b2ob3ob2o2bo3b2o3bob2o5b2ob2o2bobo3bobobobo3b2o2b3ob4obob3o3b5ob6o4b2o2bo2bob3o3bo2bob4obobobo7bob2obo4b3o2b3o2bo3b2obo2bob2ob4o2bo2b2o3bo\$b2o4b5ob2obobobob2obo3b6ob3obo3bob4o2bo3bobob4ob4ob2ob4ob2o2b4obo4bo2bo4b2o2b2ob2o2b3obo4bo3bo2bo3b2o2b6o2bob4ob3o4bo4b5o2bo3b3o2b2ob2obob2o3bo2b2obob3ob6ob4obo4b5o6bo4b3obobo2b4ob3o\$bo3b4o3b5o3b2o2bobobo2bobob2obo2bo4bob2o5b2ob7ob3obob4o2bob5o3b2o5b4o3b2ob2o5b3obo2b4o2bobo3bo7bob5o2b2o5b3o2bob3obob3ob2obob2ob2ob2o4bobobo2b5obo4b3o3b5ob2obob2o2bo2bob6ob2o2bob3obobobo\$b2o6b5ob2ob2o2b3ob3o2b7obo4bob2ob2o6bob3ob2o2b5obob2ob2o2b2o3b3ob5ob2obob5obobo2b4obo2bo4b2o5bo2bo2b4ob2ob3o3bo3b4o13b3obobo3bobo3bo4bo2bo2b4o3bo2bo3bobob3ob2obo4b2o3b2obo5b2o3b5o\$b2o5b2ob3o2b4obo2bob3ob5obobo2b2obobo4bo8bo2bo2b3obo2b3ob2obob4o2b4o3b3ob2o2bo9bo2bo2b3o6b2obo3b5o2b2obo2b2o2bo2bo3b2obobob2obobobo3bob5ob2obo2bo4bo4bo2b5obobo4b2o2b2obob5o2b3ob2ob2o3b3obob3o\$3b3o2b3o3bo2bo4bo2b2o2bo2b3ob6obo5bo3b2o7bo2b5o3bo2bo3b3obobobo2bob3obob2obob4o4bob3o3bo3bo2bob2o2b2o4b4ob2obobo3b2ob2o2bob2ob8o2b3ob2o3bob3obob3obo2bo5bob2obo2b2ob3o3b2obo3bob2o2bob3obo6b2ob2o\$o4b2ob5o2bo4bobob12o2bob4o2b7o2b2ob3o4b2o3b6ob2obo2b3o2bo3b4ob3obo3b2o4b2obob2o3bo2b5o5bo3bo4bob3o2bo2bo2b2ob2o3b3obo2bo3b2o2b3o3b2obo7b3o2bob2obobo2b3obobob8o3b2obo2bob5obob2o2bo3bo\$o3bobobo3bob4ob3obobob2ob3o2b2o2bo2b2o4bo4b3obob2o3bo3bo8bob4o3bobo2bob2obo4bo2b2o2b2o2bo3b2ob5ob2o3bobo4b2ob8ob5o4bob2o3b6ob2ob2ob2ob2ob5ob2o2b2o3bob2o3b4o2b4obob4obo3bobo4b2o2bo4bo2bo2bob3o\$3bo4bobobo4b2o3bob2o3bo8bo2b4ob2obo2b2ob3obob2o5b4obo4bob3o2bo2bo2bo2bobo2b3o3b5o2b2o4bobo4bob2o3b4obob2obo2bo7bob2obo4bob7o3bobobo4b4o2b2o5bobo2b3obo12bobo4b3obo3bo3b2ob2ob5ob3o\$bo4b2obob2ob4o2bob2ob3obo3b2obo3bo2bo3b5o2b5obo2bo6b3o2bo3b4ob2ob7o2bob2obo4b3o5bo3bobo5b4o2bob2o2bob2o5b3obobob2obo3b2obo3b3o2bobo2b4ob3o3bo2b3obo2bo3bo2b4o7b8o2b2obo5b5o4b4ob2o\$ob3ob2o2bobo2bobobobo2bobo3b2obo4bo2bo2b2o2b7obo4bobo3bo2bob3ob2obo2bobo3b2ob3ob2obobob2o5b3o3bo2b2obobob2ob3ob2obob4obo3bob3o3bob2o2bo2bobobob6o2b2ob2o2bo2bo3b3o2bo2b3obobo2b3o4b4o5bo4b4o3b2o2b3ob3obob3obo\$bob2obo2b2o2bo3bo3b8ob2o2bo3b2ob2o5bo4bobo2bob3ob2ob2ob2o3bobobo3bo3b2o2bobobobob2ob4ob4o2bob4ob2o2b3obob4ob2ob2o2bo2bob2ob3obo6b2ob5ob2ob2ob4obo3bob6o2b3o2b4o2b2ob3o2bobobo5bobobobo2b3ob5obob2o2b3ob2o\$bob3o4bob2ob3ob2obobob4o2b2o2bob2ob5ob3o3b3obo4bo4bo4b3obob6obo2b4obobobo3b4ob2obob4obo3bobobobo2bo3b3ob2ob3ob2o3bob2obobo4bobob3obo4b3o2bobob3obo2b2o5b2obo2b3obob2o2bobob6o2bobo2bobobo2bob2o2bob3ob6o\$obobo4b3o5b2o8b2o3bob4ob6o4b2o3b3o2b4o4b3obo2bob5obo4b3ob3ob2o2bo2b3ob3o7b3obo2b4o2bob2o2bob3ob3ob2obob2ob4ob3o2b3obobo3bo3b2ob2obob3obo3bob5o2bo3b4o4bob3o3b4o3b2o2b2o2b6o3bob4obo\$o2b3o3b5o2b3obob4obo2bo5b6obo2bo6b3o2b2ob3ob2o2bo3bob2ob8ob2o2bobobo3b4o2bo2bo2bo3bo2bo4bob2o7b2o3bobo2bo2bo2b2o2b2o4bo7bob5ob2o3b2o2bo3b3ob2ob2o2b2o3b6o3bobo2bo5bo3b4o2b2obo6bobo3bo2bo\$bo3bob2ob2obob2o2b2o2b2obo2b2obo2bo4b3obo4b3ob6obob2o3bob2obo2b10o5bob3ob6o4b2obobo3b2ob3o3bob6o2bo2b4obob3o3bo2bobo2bo2b2o4b4o2bo5b4obobo3bo2bob2o2b3o3bobo4bo4b3ob2o2b2ob2obo5bo3b2o3b2ob2obobo\$2b3o2b2obo5b4obob2o2bo2b2o3b7obo2b2obob3o2bob3o3b2obo3bobob3o2b2o3b3obo3bo2b2obo2bobo2bo4bobo2bob2o3bob2o3bob3ob2o2b2o2b2o2bo3bob4ob2o4bo3b4o2b2ob4ob3ob2o2b6o5b2o4b2obob3ob2obob2ob3o2bob2o4bo4bobob3obo\$9ob2o4b2o3bo2bo3bobo3bob2o2b3ob5o5b5ob2ob2obo8b2o2bo4b2obo3b2o4bo2bob7obo4bo2b2o3bob2ob2o2bob3obob2obobo3bob5o2b5o2bob3obo3bobo2b2o2bob2ob2obob3obo4b2o2bo2bob7obo4b4o3bob2o2b4o4bo6b2o\$3o7bo5bob4obo2b2o2b3o2b3o4bob4o3bo2b2o2bob2o2b5o3b5o2b2o2b2o2b2ob2o4bo2b3ob2obobob3ob2o2bob2o6b2ob2obob2o2bo2b2ob2o2b2ob3obobo5bobob3ob4o2bobobob3o3bo4b3o2bobobo6bo2bo4b3obob2o5bo4bobobob3o6bo\$4bobobob3ob3o4bob2o2b2o3b3ob3o2b2obobo2bobob3obo2b2o3bo2b2obobob2ob2ob2ob2obob3o2b2o2bob2ob3o3b2o2bo2bo2b2o2b2obob2o2bobo2bo3bo6b3o3b4ob2o2bob2o4bo2b3obo4bobob2obo3bobo2b2obob2o5b2o2b3obo2b5ob4obo5b7o3bo3bo\$b2obob2ob2o2bob7o2bobobobob2ob2ob3ob4o5bobo6bob4ob3o2b3ob3o2b4ob2ob2ob4obo3b3o3bobobo2bobob2ob2ob4o8b5o2b3o3b4o3bobob2o3b2obo5b2ob2ob2ob4o5bobobobo4b2ob2obo2b2o2b2ob2obo2bobo2bobo3b2o2b3o3bo2b2ob2o\$b3o2b3o2b2ob2obobo2bobo5bo2bo5b3o2b5obo2bo2bo2bo5b2o2bo2bobo7b7obobobo2b6obobobob2o3bo3bo2bob5o3b6obo2b3o3bo3bobo3b3o2b5obob2obo2b3ob9obob4ob6o3bob2obo3b2o2bobo3b4o4bobob4o4b3o2b4o\$2b2ob2o2b7ob5o4bo2bo3b2obo3bo3b3ob2ob5obob4ob3ob2o2b2obob4o2b2o4b3obob2o13b2ob2ob3obobob2o2bob2o2bobo9bo3b10ob3ob2obo2b4o2b2obob2o2bob2obobobob4o3bob2ob2o2bob3o2bobob4o2b2ob10obobob7o\$3b3ob3obo7b2o2bob3o2bob4o6bo4b2obob3o4b2obo4bo3b2ob6o2bob3o4bo6bob4o3b2ob4o2b4o3b2o3b5obob2o3b2o2b2o2bobo2bobo2bo2bo2b2o2b2ob3ob3o2bob2ob3obob2o2bobobo2b2obo2bo7b2o3b4o4bo2bo2bob2o2b2obo4b2ob2o\$o2bo4b2o3bob2o2b6obo2bobo2bo2b3ob6o5b3o2bob5ob2o2bo3bo2bo2bob4o4b3o4b3o2b3o3bo2b2o2bo2bo2bo2b2o2b2o2b2obo2b2ob2o2bo3bob3obo2bob5obo2bo2bob4o3bo2b3obobob4o13b2ob3o2bo5bo2b6o3b3ob2o2bobob2o3b4o\$b4o2b6o2b2ob3o2b2o3b3o3bo3bo4bo3bo5bo2b4o5bob3ob2o6b9o2bo2bo6b2ob3o4b3o2bob2ob2ob2o2b3o2bo2bobo2b3o2bo5bobob2o2bo2b2o6b2o3bob4ob2obo2bo2bo4bob2obobob7o6b4o4b2ob2o2bo4bo2bo7bo2b3o\$3ob3o2b4o3bobob2ob2o3bo2b4obobo2bo2b2ob3o2bo2bo3bob2o2bo5b3ob3ob2o2bo5bob2obo3b4obo3bo6bo4bob2obob2ob6o7bob3o2b2o3b2obo2bo4bobobobo2bo4b3o3bobob2o2b2o3b2ob4obo2bo3b2o3bob2obo2b8o4b4obo3b2obo\$4b2o5b2obo2b2o2b3o3b4obo2bobo5b4obo2b3obo2bob2obo2b2obo4b3ob2ob3o3b3ob6ob2o2b2obo5b2o3bo2b2obo2b2ob2ob6obob2o3b2o2bo5b3ob2ob3o3b2o7b4obo4b3o2bo3b2ob4o2b5o2b3o3b2o2bo3bob3obob4o2b2obobobo2b2o2bo\$bobo3bo2bo4b4o5b2ob3obobobob9o3bobobo2b2obo2b3obob2o2bobob2obob2ob2obo3bo3b3obobob2obo3b2o2b5ob3o2bo4bo3bo3b3o2b3ob2o3bo2bo8b2ob3o2bob11ob3o4b4o3b2o9b4o3bob2o2bobob4ob2o5bo3bo2bo4b2o\$2bo3b3o2b9obobob3o2b5obo7b2obo2bo7b3ob2o2bo2b2ob3obo2bo2bob2o2b2o2bo5b2o3bo6b2o3bob4o2b2o3bo3b6o3bobob5o4bobob4o2bobob2obob2ob2o2b2o2b4ob2o9bo2bo2bobo3bobo4b4o2b2obob3o3bob2o2bob2obo2b4o\$o2b3ob7o2b9o5b3ob2o3bobobo3b5o2b2o2bobob2obo11b3o8b2o2bobo2b6obob3o2b4o2bo2b2obobo2bo2b6obo2b2obobob2o2bobob3o3bobobo2bob3ob2obo2b2ob3ob2o2b3o2b5obob3obo2bob2o2bo3b3o5bob4obo4bo4bobob2o\$obo5b2o6b2o2b2o3b2obo2b2ob2ob4ob2o4bo3bobob2obo4b3o2b5o3b2ob5o4b2o2bo7b3o2bo4b4ob4ob5o2bo2b2ob4o2b3ob6o2bobob2o3bo2bo3bo2b2obobo5bo2bob2obo2b6ob2o3bobo2bo3b2ob2ob5obob4obob3o7bo4b2ob2o\$3bo2bobo2bo5b2obob3o3bo3b2o2bo6bobobo2bo2bob3o2b2ob2o4b2o3bo3bob2o2bo2b3o3bo3bob2obo2bo2b4o4bob3o3b3obo2b2o2b2ob5o3b2o2b3ob2ob2obob3o4bob3obo6b3ob2o3bo8bo5b6obo2bo2bobo7bob2o2bobo3b7obob4o\$8obo2b2obo2b2obo2bob2obobo3bob3o3bob3obob3obob6obo6b2obo2b3o2b2o2b3o2b2obob2o2b3o2b2ob4obo4b4obo3bob2ob2o5bob2obo3bo2bo3bo5bo2b2o3b2o3b4ob4ob2obob4o4bob3o6bo2bo5b4ob3o4bo2b3o4b3o5b4o2bo\$ob5obo2b2obo2bo4bob5o2bobo3b3o6b3o6bo3bobo2bob3ob2o7b5o6b2o4bobobobo3bobo3b4obobob3o2bobob2obo3b3o2b2ob6ob6o2bo2b6o4bo2bo2b2o2bo2bobobo2b3o3bo5b2o3b8ob2o3b2ob2ob2o2bob4o2b2obob4o2b2o\$3b3ob3obo7b5o8bob4o2bobo2bobo4b3ob3o6b3ob2o2bo2b3o2b2o7b3o2bo3b3ob7o5b3obob4o2b3o2b3o2bo2bo5bobo3b3o2b4o8bo3b3o5b4o2bob2o3bo10bo2bobob2obo2b3ob3o2b5o2bobobo3b2ob5o2b2o\$3ob2o2b2o4bobobo2b2o2b2obo4bobobo3bob3o5bo4bo3bob3o4b2o4b2o3bo2bob4ob6o2bobobo2bobobo5bobobo2bo2bob2ob2o5b2o2bob2o2b2o3bobo2b2o5b7o2b2ob3o2b2ob2ob4o4bo5b3obo2bo2b3obob2ob3o3bob7o2b4o4bo3b2o2b2o\$3bo3bob2ob2o2b3o2b2obo2bo4bo3bo4b2ob8o2bobo2bo3bo2bo2bo3b2obo2b2o3b2o5b5obo3bo3bobob2o3bo2b2o2b2obo4b3o7b2o3b3o3b4obo4b2o2b5o3bo2bo2bo3b6ob2o2b3ob3o4b2obo2b3ob5ob3o3bobo4bob2obo4b2obo3bo\$4b4ob5o2b3obobo2bo2b2o2b3obo5bo5b3ob4o3bo3b2ob3o3bo3b5o2bobo3bo6bo6bobo7b2ob2ob3obo4bo2bo3bob2obob2o2b7o3b2ob2obob3o4b2ob3o2b3obo3bob3ob2ob3o2bo4bo2b4o2b3o2b3obob2o2b3obob3obobo2b2obo2bob2o\$2o3b2obo2bob6o3b2o2b3obob2o3b3o2bob3obo2bobo3b4ob2o5b2ob2ob2obob2o2b3obob2ob3o2b2o4b3o2bo4b2ob5ob2obob2o5bo4bob4ob4ob3o2b2obobob2ob2obobobo3b4ob3o2bo2b2o2b2obo2bo2b4obob2o3b2obob2o2bob2obo2bobobobob4obo2b4o\$o2bob3ob3ob2obobob2o2b2o4b5o2bob2o3bo4b3o3bobobo2bob2o3b3ob7o3b5ob3o2bob7ob3obobob6ob2obo2b2o4bo4bo2b3obo6bo2b5ob4o2b5ob6ob3ob10obobo2b2o4b2o2b3o2bo2b2obob3ob8o4b2ob2o3b2o4bob2o\$2bo2bo3b2o4b2ob6obobo3b4obo5b2o2bobobo2b2o2b9ob2ob4o2bo3b2o3b3ob3ob5obo5bo3bo2bo4bob6o3bo2b3o2b4ob3obo4bobob4obob2o4bob2obobobobob2obo2bobobob4obobob4o3bo6bo5bo2b3o3b3obo2bo4bo2bo3bo2bo\$3ob2o3b2obobobo2bo4b2obo2bobob3obob2o4bobobob3o11b2o2b2obo2bo3b4o3b3obobobob4o4bobob2obo2b2o3b3o5bob4obobobobob2obob2obo5bobob2o3b2o2b2obobob2o2bob2o2b2o7bo3b2o3b2o3b3obo4b4ob5o2bobo2bob2ob3obo2bo2bobo\$2b3obo2bo2b3o2b2o3b3o2b4ob2obob4o2bob4o3b2obobo2bo8b3ob2o2b5ob5o2b2ob2o5b2o2bob2ob2ob3obo2bob5obob2ob3o2b2ob2obo2bo2b2obo2bob2ob2ob3obo2b2ob3ob4obobo9bobo2b4o3bobo2bobob2ob3o3bo3bob2ob2o11b2ob2o3bo\$2b3o7bo2bo3bob3obo3bob2ob2ob5obo3bobob3ob4obo3b3o4bobob5ob7ob2o2b2o4bo3b4ob6obob3obobo3bob2obo5b2ob2obo3bo2b2o2b2obo3b2o3bob4o2b3o3b2obobob2o2bo2b8o3b3ob5o3b2ob2o4bo2bob2o2b2o2bo6b3o2bobo\$2obobob2o3bo2bo2bobo8bo2b3o2bob4o2bobo2bo3b4o3bobob2o4b2o4b2obob4o2bob2ob3ob5ob3obo2b2ob3obo2bob2ob6o2bobo5bobo2bo5b4o2bo3bobob5o4b2ob4ob2o5bob2o3b2obob3o2bo2b4obo3bo2b2obo3b2o3b2o2bo3b3ob2ob2o2b2o\$3b2o2b2obo2b2ob4o6bobo4bo2bob2o3b4o4b3o3b2ob4o2b3obo3b3o2b3o4bobob3obob4ob4obo3bo3b2o3b2o2b2o2bob3obobo2b5obob4obo4bo2bob2obo3b2obo3bob2o4b2o3bo4b3o3bobo4b4o3b2o3bob3o2bobob3o2bo2bo3bob4o6b2o\$3b2ob3o3bo3b5obo2bo2bo2b2ob3obo2b7o2bob4o2bob7o2bobob2ob2o2b2ob8ob3obo3b3o3bobo3b2o4bo2bob5o2bo5bo2bobob4ob5ob2ob3o5bo4bob2o5bobobo3bobob3o3bo2bo5bo2b5o4b6o4bo3bob2obob2ob2o2b2ob2o\$obob2obobob6o2bo2bo2b3obob2o4bo5b5ob2o3b2o3b3o6b2o4bob3o2bobob7o3b2o3bo5bob3o2bo2bob2o2bobo3bo2b4o2b2o3b3o2b2ob2o3bo2bob8o2bo2bo2b2o7b4o4b2o3bo2bo3b3o2b3obo2bob4o2b5obobobo5bo4bobobo2b2o\$2bo4b3obob5o3b2o2bo2b2obo3b2obo3bo3b5o3b4o2b3obob6o5b3o5bo2b8o5bo2b2o2b4o3bobo7bobobo3bobobo7bobob4o6b5o2b3o4b2o3bobobob2o2bo3bobo4bobo4bo3bo3b4ob3ob3obob3ob2ob2ob5o3b3ob4o\$bobob5o3bo3b2ob2o2bo2bobo2b6ob2o3b2ob2o2b3obobo2bo2bo11b4o6bo2bo2bob2o2bob6ob2o3b2o2bo5bo3bo4b2o7b2ob2ob3o3bo4b2o2b3o3bob2obobobo2b4o5b2obob3o5bo2b2ob2o2b2o3b4o5b2o4bo3bob2ob3o2bo4bobo2bo\$3obo4b3o3b2o5bob3obobob8o2bo3b2obob3o2b5obobo2b5obo2bo2b6ob3obo8b2obo3bobob2o2b4o3b3o2bobobobob3obob6obo2b4o3b3o2bobo2b2obo3bo4bo2b6ob2ob5ob3obo2b4o2b3obob3o3bo2bobo4b2o2bobob2obobo2bo2b2o\$3b2obo2bob5o2b2o3b2o2b2o3bo2bobobobo3bobo2bo3b3ob7ob3o2bob3ob7ob3obobo2bobob5ob3o3b2obob3obo2b2o2b2ob2ob5ob2ob3o2b2obo4b2obo2bo4b3ob6o3bo7bo2bob3obobobo4b2o5bo4b5ob3o2bob5o2b3ob3ob2obob3obo\$2o2b3o2bo3bobobobo3b2obo2b7ob3o2bo3b6obo4b2o2b3ob2o2bo2b2obobob2ob2obob4o8bo6bo3bob6obobo6bobob2ob2ob3obo3bobo6b2o3bo3bobo5bo3b2o5bob3ob8obo3bobo2b2ob2o4bobo3bob4o10bobo2bob3obob2o\$bo2b2o2bob2ob3o2bo2bobobob3obo4b4obo3bo3bo2bo2b2ob2o3b7o5bob2obo2bo5bo2bo4b2o2bob2o4bo3bob2o2bobobo4bo6b2obobob2ob3ob7o4bo3bo2bob3ob2obo3bo2bo3b3o2bobo5bo2bob5o3b5o4bo4bobobob4o3b3ob2ob3o2bobo\$bob3o2b2obobobo3b2o4b4ob3o3b5obo2bo2bo2bobobo2bo2b2ob3o2b3o3bob2obob3ob5obo3bo3b5o3b2ob4o3bobobo2b3o2b2ob3obobob3obo2bo2b2ob2obobob2obobobobob5obob3obo4bo3bo3bo2bob13o3b3ob4obo2bobo4bob2obo5b6o\$bo2b2o3b3o5b2ob8ob2o3bo2bob2obo4bobob2ob2o3bo4b3obo2b2obo2bobob3ob2o4bo3b2ob3o2b2o2bobobob2o2bo2b2ob3o3b3obo5b3ob2obo3b2ob5o3b2o2b3o3b6obob3o3b5ob2ob2ob3ob3o2bob5obo2bo2bo2bo3bo2b3ob2obob2o2bobo2b3ob2o\$4ob2o4b2o4b2ob2o2b3obob7o4b4obo2b2obob3obobob2o4b3o2b3ob2o3b6obo3bobo2b3o5b2o5b4ob2o3b2ob2o6bo3bo5b2ob4o4bob2o2bob6ob4obob3obobo4b2obo3b2o3bo2b2ob4ob3o2bo3bo2bo3bo2bo3bo2bo7bo2bob2o\$ob6obo3b5obobobo4b3o2bo2bob2o2bo2bob3o2b6obo2b2obobo2b2ob2ob2ob2obo4bo3b4obo2b2ob7ob2ob2o4b3obobo10b3ob4o4bo2b2o2bob2obobobobo2bo7bo6bobo3bo3bo6b2o2b2ob3o2bo2b2o6bo2b2obo3b4o2bo7b2ob3o\$o2b5o2bo6bobob2obobo2b3o3b2o2b2o2b4ob2o2bo2b2obo5bob2o2b3o2bo4b6obo3bob2obo2b2ob3ob2o2b2o5b3o4b3o3bobob4obobob2obo4bob2o3b4o6b2o2bob3o2bobo2b3ob2o2b2obo5b2obo4bo2bob3o4b5ob2o2b4ob4o4b2obobo2bo\$3b2ob2o4b2o2b2o2bobo2b2o2bo2bobobob6ob2o2b5obob2o2bobob2obob3obo4bo2bo4b2o6bo7b3obo3b2o3b2o4bobo5bo4bobo2b2o3b2obo2b6o2bobo2bobob3ob5obob2ob2o2bobobobo3bobobo3b4ob3o2b3ob4o4b2ob4obo2b3o3bob4o2bobo\$b4ob4obobo4bobo3bobo4bobo2bo2b3o3b2obo8bo2bobo2bo2b2o2bobo2b2obo5b2o6b2ob2o5bob2o2bobob2o2bo4b5ob2o2bo4bobo2b2ob2o6b2ob4obo2bobob3obo2b5o2b2o6b3o4bobobo3bobobobobob2obo2bobobobo5bob2o3bo2b3o2b5o\$obob3o4b2o3b2o4bo3bob2ob2obob2ob2obo4b2ob3o2bo2b2obob3obo6bo2b6o3bob3o2bo3b2ob2o2b4ob2ob2o2b2o2bobobo2bob2o2bo4bo5bo10b2o3b3o2b2ob2o3bobo2bo2b2obo3bo2b5o2bob4o3bo6b3o2bobob3ob3obobobobo5bo2bobo2bo\$bo5bob3obob2o2bob3obo5bobo3b5ob6o2b2obo2b2o3b2o2b2o7b2o3bo2b2o2b2obo2bobob2obo2bob5ob4o3b2ob2o5bo3bo3bo2bo2b2obobo2b3ob3obob2obobo2b2o4b2ob3obo2bo2b3ob3o3b2ob4ob5o2bobobob2o3b4o2b3obo2b2ob2o2bo4b5o\$b2o3b2ob3o8b2o3bobob3o2b5obobobo4b2o2b2o4bo2bobo2bo3b2obo2bo3b3ob3o3b5o2b2obob5ob2o2bob5ob2obo4b2o2b4o2b2ob7o3bo2b2o2bo2b2o5bobo3bo2bo3b2obo2b3o3b7o4bo4b4o2b2obob4obobob2o2bob2obo2bo2b3obo\$b3o2bobo5bobobobobobobo2b2ob2o3b5ob3ob3ob2obo5bobo2b6ob4ob2obob2o3b3obob3o5b3o2bo2bo2b3o4b3o3bobo2b4obo2b2ob2ob2ob3ob2o5b2o5bobo3b2ob2ob3o3b2o4bobobo2b3o2bo3bob2ob2o3bo2b2o2b2o3bo2b2obobo3b2ob2obob2obob3o\$2o3b2obob3ob2obo5bo3bo2bo2bob4obo2bob5o3bo6b2o2bob3obobo4bob3ob2obo2b2obo2bob6ob3obob2obo4bob2obo2bobob2o2bo2b2o2bo2b6o2bobo2b2obo2b2o2b2o2bob2o2b2o3bob3o3b3obo2bo2b2ob5o4bob2obob5o2bobobobobob4obo3b3o2bo\$3bob2o3bo2b2o4bobobobob3ob7o2bo2bobo6b3o4b4obob2o2bobob2obob4ob3obo5bo2b3obobo3bob6o2b3o2bob2o2b3o2bo3bob2o3bob2ob3obob5o4b4obobo2b4ob2ob2o3bob2obo2b2ob6o4b3o3bobob2ob2ob2o2b2ob4obobo3b2ob3obo3bo\$ob2obob7obo3bo3b2ob5o3bo2b2o2bob2o4b2obo3bo2bob5obob2ob2obobob2obobo2b3obo5b2obo2bob5obob2ob7o5bobobo3b2obo2b2obobob2o2b2o3b2obob4o3b4obo2bobo2bo2bo2b2o3bo2b2o2b2o2bo2b2o3b2o2bo2b2o2b2o4b4o3bobo2b6ob4obo\$b2ob4ob2o2b2o3bobobo2bo2b3o4b2o6bo3b4o4bo2b2ob3o2bobob3o2bo3bobob3ob3o3bobo4bo2bo2bo2bobobo5b2ob2o3b3obob4o2b2obo2b2o2b2obo2b4o4b3o2b4obob2obo2b2o4bo2bo4b6ob4o2b2ob2o3b2ob2ob2ob2obob2o4bo2bo2b2obob8o\$obob3obob4ob4o2bo2bo3b2o2b3o2b4o2b4ob2o2bob7o2b2o2bob3ob10obob3ob2o4b2obo4bob5ob3o3bo5b5o2b2o2bob2o2bob2obo3bob5o3bo5bobo4bobobo4b3ob2o2b2o4bo2b3o2bo2bobob4obo2b9ob2obo4b3o3bobo2b3ob2o\$2ob2o2bobobob2obob2obo2b6o2b2obob6o3b2obo3b3o2b3ob5o3b3o2bo6bo4bob3obo3b2o2b2o2b3ob2obobo2bob2obob3ob2o2bo4bo7b3o2bo2b5o5bo2b3ob5ob2o3b2ob2o5bobo2bo3b2o4bo3b2ob4o4b2obobobobo2bo2b4obo3bob3ob4o\$obo4b2obo3bobobo2bo2bob2o2b2obobo2bo2b3o4bo2bobo2bob3o2b3ob3obobo4bob3obo2b2obob4obob4ob2o2b3o6bo5bo6bo3bo9b2obo2bobo3b2o2b3o3bob2ob3o3b6o4bo5b2o2bo4bobobo2bo2bob3obo5b2obo3b4o3b3ob3obob2ob2obo\$bo3b2obobo2bobob4ob2ob6obob3ob2o3bob7obob2o2bo3b2o2bo2b3ob3obo2b2ob3o4bo2b2o2bob2obo3bo2b5obobo3b2ob2ob4o4b2obobob2obo2bo2bo2b3ob2ob4o2bob4obob3ob3o5b2o4bo2b2obob2o3b5ob3ob2o3bo3bobob2o2bobobo2bo2b2o3b5o\$bobobo2bo2b2o3b5ob3o4bo2bo3b3o3bobo3b2o2bob2o2bo6b3ob3ob2ob2o3b2o2bo3bob2o3bo5b2obo2b2obo16b4obobo2bo2b2o2b6ob3o2b2o2bobob2ob2o3b9obo2b3o3b2o2b3o2b2o2b3o2bob6o2b3o2b3o2bobo3b6o2b2obo5bo\$4ob2obo4b2o2bo2bobob5o2b5o2bob3o5b7obo5bob3obob3o4bo2bobobo2bo2bo4b3o6bob2o3b2o3bo4b2o2bobo2bobobo3b2o2b2obo3b3o2bob2ob2o2b2o3bo2bob2obobobob2o2b2obob5o4b3obo2b4o4b2o3b3obobob3obob2o3bobobobo2bo3b2o\$3o2b2ob3o2b3o5bo2bobo8bob3obo3b4obobob2obo5b3o2bo5bob4obo4bo5b2o2b2o3bob2ob3obobobo2bo7bobo2b2o2bob2obo6bo4b2o5bo3b4o3bobobo2bo2b2obo4bo2bob2ob2obo3b2o3b3o4b6o2b2obo2bo2b2o2bob2o2bobo2bobo2bo\$o2bob3ob2o6bo2bo3b4obobo2b2obobobo2b2ob2ob2o2bo6b2ob2ob3obo2b3o2b2ob2o2bo3bo2bobobobo2b2ob3obobo2b3o2b2obobob2o4b2obo5bo3bob2ob4o5bo4b3o3b2o4bo4b2ob4o2b2o2b2o2b3o2b2obo2bo8b3o2b3obo3b2o7b2ob2o3bob2ob2o\$obo2bo2b2o2bo2b2ob3o4bobo3bobo3b2obo3bob4o2b2o2b3o5bo2b2obo2bo4b8ob2ob3obob3obob3obo3bob2ob3obob3ob4o5b4obo2b2obo4bo5bobo3bo2b3obo3b3obobobobobo2b2obo3b5ob2obo2bo2b6o4bo3bo2bo2b4o2b2o2b2obo4b3o\$2bo2bobob2o4bobo2bo5bobobo2bo2bob3o4bob3o3b3ob2obobo4b6o4bobob4o2b6o2bo3bob2ob8o4bob2o7b2obob3ob3o2b3ob2ob3ob3ob2o2bobo2b2ob2o3b6o5bo3b2o3b5o3b5o3bobob2obobo10bob3obo2bobob2ob2o3b4o\$7bobob3ob5obo2b5obo3bo2bo2bobo5b2o3bob3obo3bo3bo4bob4obob5o3bo2b2o2b2o4bo2bo2b2o2bobobob3obobob6o2b2o3bobo4bob2ob3obo2bob3o2b4o2bobobo2bo2bo5bo3bo3b5ob2o5b3o2b3o5bo2b2obobo2b5ob2o3b3ob2ob5o\$4b3obo4b2o7b2ob2o3b4obo3b3ob2obob6o2b2o4bob4o2b2obob4obo2b2o3bo2bobo12b3obo4bo2bob3o2bo2bob5o3bobobob2obo2bob3o2bo3bobo2b3o2b2ob3o4bob3o3b3o3bobobo2bob2ob3obob2obobo2bobobobob5ob4obobo2b2o2bo3b2o\$ob2ob4o2bo2b2o2bo2bobobob3ob4o3bob2o6bo4b3o2b2o2bo2bob6o7bo2bo4b2o2b3o2bobo2bo2b2ob2ob2ob2o2b2obobo5b3o2b3obo2bob2o3bo4b2o3b4obobob2o5b4obobob3o6bobobo6bobo3b3obo3b2ob3ob3obo7b2o2b2obo5b2o2b2o\$3ob2o2b3ob3o3b2o2b2o3bob5ob4o3bo3b2ob2obo6bob2obo3bo2b3ob3o2bo4b4obobob2o2b3ob5o4b2obobo2b3obo4bobobo3b2ob2obo4b2obo2b2ob3o4bo2b4o3bo6b2o3bobobo2b3obob3ob2ob2o3bob2o4b3obo2b2o3bo2b2o2bob2o2bob3o2bob2o\$4o3b5o2bo6bo3b3obo2bobobo5b5obob2obob2obo3bob3obo2bobo4bob3o2b2o3b3o2b2ob2obo4bo3bo3b2o3bo5bo2b2obo2bobobobobo2b5o2bo3b5o2b3o2bob2obob2o10b3ob3o4bo2bob3obo6bob4obobo2b2o2bob3o3bo3bob4obob3o\$4o2bob2o3bob2o3b2ob2obo5b2obo2b2o2b2obob2obobob6obob3o2bobobobob2ob3obo2b3o4b2obob8o2bo2bobob5o2b2o4b3o4bo2b2o2b2o2bo2bobo2bobobobob2o3b2o2bo4bo3b2o2bo4bo3bo2b2obobo2b2o2b2obobobo3b4o2b3obob2o4b2o6b7o2bo\$ob3obobob2o3b5ob4obobo2bob2o2bobob3ob6obo2b2ob6o3bo2b2o6bo3b2o3b3ob4ob2o3bob4o2b6o3b2obo4b2o2bo2b2ob3ob2o4b2o2bobo3bo2bob2o3b2o4bo2bob2obo3b2o3b2ob3obob2o2b6o3bobo3b3obo2bo4b3o2bobo2b4o3bo2bobo\$3ob2o3b2obob3obobo2b2o3b6o2b2o2bob2obobobob7ob2o3bo2b2ob2obob3ob2ob3ob4o2bob2o5bob2o2b2o2b7obo3b4obob5ob2o3b2ob2o2b2o2b2obo3b3obo2bobobobob2o6b2ob2o2b2ob3ob2obobo3bob2ob2o5b2obo3b3obob3obob3obob4ob2ob2o\$bo2bobo3bo2b4o2bo2bo3bobobobo2bo3b3o5b3ob2obobob4obo2bob6ob5o5b2obo2b4o5b3o3bobo6bo5bo5bob3ob3obo3bo2bob4o2bobobobo3bo4b3obo2b3obo3bob2o3bob3ob9obobob3obo2b2o2bo2b4obob2o2b2ob4obobo6bobo\$2b5o5bo2b2o2b6ob2o2b2o2b2ob2o3bobo2bo2bobo2bo2b2o3b5ob2o2b2o4b2o2bob2o5bob4o2b2o8bo4b2o2bob2o2bo2bob3o2bob2obob2obob3ob2ob2ob4ob3ob5ob5o2bo2b3ob3o4bob2obob9ob3o5bob7ob3ob3o2b3o2bobob3obo2bo\$b3ob2obob2obobob3o3b2obob3obo4b2ob5o4b2ob2o4b2o3bo4bo3b5o2b2ob3o2b2o2bobobob3ob3o2bo3b2o5bo2bo2b6o2bob2obob3o3b2o4b3ob2obobo4bo3bo2b3o2b5o2b2o6b3o2bob3obob4o2b4obobobob2obo4bobobo5bo2b3obo3bo3bo\$b2ob3ob3ob5ob2o3b2o6bo2b5ob2obo2b2obo5bobobo3bob3o3bo2bo3bo2bob3o2bo3b3o2bo2bobo2bo3bob3ob2o3b6obo2b2obob4o6bob4o2bob2o2bo2b2o3b3obob2obo5bo2bob4o2b2o2b4ob2ob2o4b2o4bob2obobo4b2o3b3o3bo2bo5b2obobo\$3o3bo7b3o2bo2bob5o2b3o2b4obob2o2bo2bo2b3ob3ob2ob3o2b2o10bo2b8obo4bob2obo2b2ob4ob2o2bob2ob4o2b8ob3o4bobo3bo3b3o3bo2b2o2bo4bob2obob3o2b3o2bob3ob2o3bo2bo2b2o6bo2bobobo2b2obo2b2obobo2bobobobobo6bo\$o3b2o6bo2b2o2b4o2b6obob2o4b2ob2obob2ob3o3bo2b2obo2b2o3b4ob2o2b6ob2ob5obo4bob5o3bo2b4obobo2b2ob3obo4b2o2b5obo3b2o2bo9b4o3bo4bob3o4bo4b2o4bo3bob2ob2obo3bob2ob4ob2o2bobob2obob3obobo5b4ob2o\$obo2b4obo3bob3o3bo5bo2b3obo3bo2b5ob2obo4b2ob3o2b4o14b4o5bo6bo2b2o2bo7bo3b2o2b2obo3b3o2b3obo2bo2bo4bo2b4o5bo2b2o2bobobo3b2o2bobo3b2o2bo2b2o3bob2o2bo3b5obo3b11o6b4obo4bo3b7o\$b6obob2obo2bob3ob2o3bo2b5o2bo3bob3ob2ob7o4bo4bob2ob4obo3b3ob2o2b2ob6o2bob8obo2bo3b3ob2o2b2o2b2o7bobo2bo2bo4b2obo3b4ob2o2b4obob2o5bobobobo3b4obo3bo2b4obo2bo3b4ob2o2b2obo2bob2obobo2b2o2b2obo3bob2o\$b3obo2b4o2bo2b2ob4o2bo5bob4obo2bobo4bo4bobob2obobobobobobo2bobob2o3b2o2bo2bo4bo2b6o2b5obo2bob3obobob3ob3obobobo2bob5obob3o2b2ob7obo6bo5bobobo3bo2b2ob2o3b2obo2bob2obo5bo4b2o4b2ob2obob2ob2ob6obo4b2o\$3bob2ob4ob4o6b3o2bo2bo3bobobob4obobo2b7ob4ob4o3bobo3b3ob2o2bo7bo2b3ob6o5bobobo2bo2bo2bo2b2ob2ob2obo3bobo3bo3bo2b2ob3o2b4o2b2o2bob4o5b3o2bo2b2o4b2ob4ob4obob6o4bo3b4o2bobo3bobo2bo3b2o2bo3bo\$obobo2b3o3bo2b6o2b2ob2obo4b2ob6o2bo6b4o2b2obob2ob2o2b2ob3ob2ob2obobob4o2bobob2ob2obob2o2b4obob2obo4b2o2bo2b5obob6o2b4o3b4obob2ob2obobobobo3bobo4b2o2bo4bo2bo2bo3b3o2b2ob3obo2b5ob2o2bo3bob2o2bo2bo4bo2bob2o\$2b2ob2ob2o2bobo3b2o4b3obobobo3bo2bobo2b4o3b2o2b2ob2o5b3ob3o3bo2b2ob2ob2ob2obo3b2ob3obo2b2o8b2o2bobobobobobobob2o2bobo5bobobo2bo3b2ob2ob3o2b3ob2obo2bo2b2ob2obobobobob2o2b3obob3ob2obo2b2obobobob2ob4o3b2ob5ob2o5b2o3bo\$2ob7obob5o2bo2b2ob2ob2obob5o5b3obob5o2bobob2ob2o2bobobo2bob3o3b7o2b2o2bo2bo4bobo3bob4obo2bo2bo2bobo2b3o5b3o3bo2bobobo4bo3bob2obob2ob2o3bob4o3bo5bo2bo3b3ob3o2b2o3b5obo3bobo4bob2ob3ob2obo8bo2bo\$2o2bobo6bo4bo2bo3bo4bob2ob4o2b4o3bo4bo2b3o2bo5bob5ob2o2bob2ob5obo2bo3b3o7bo4b2o2bo3b2obo2b2o2b2obob2o2b2o4bo6b4o3bo4bob3ob3obobobo2b2o3bobobo3b2obobob3ob4o5bobob2o3bo8bobo2bo3bo5b3o2bo\$b2obobob2o4bobob2o2bo4bob2o3b3o2bo2bobob2o3b2o3b2o3bo7b3obo5bobo5bo2b2obobob2o4b2obob2o5b2o2bob3o3b2ob2obo2b3o2bobo3b5o2bo3bobo3bo5b7o3bobo2b2o3b2o2bobob2obo2bo2bob2ob2ob2o4bob2obo2b2ob3obob3obob7o2b2o\$2obobob3obo3b2o2bobobob3obobobob3o2bo2b2ob2ob2o2b2ob6o2bobo8bo2b4o4b2o3b4o3bo3bobob2ob5obobo2bobo2b3o2bo5bobob2ob3o6bo3bo3b2o5b2obob5o2b2o2bo2bobo3b2ob2o3bo4bob2o2bo5b4obo2b3ob2o2bobo2b4obo6b2ob2o\$bob2o3b5o5bo2b3ob2obob3o5b3obobo6bobob2obo2b3ob3o2b2ob2ob3o3bob3o4bob2o2b2o2b2ob5o6bob6ob2o2bobo3bob2obob2o3bobob3o2b2o2bo4b3obo2bo2b6o2b2obob5obo4bo4b2obob2ob3o2b2o2b2o3b5obobo4bo2b5obo3b3o\$2obo2b3o2bobob4o2bob3o2bob2o4b3ob2o6b2obobob5o3bo2bobo3b2obobob2o2bo3b4obo6b2o6bob3o3bo4bobo2bo2b2o2bobobob11o3bo6b4o2bo2bob5o3b2ob8obo4bobo3b2o2bob7o2b3o2bo2b3obobob8o2b3o3bo2bob2o\$2b3ob2obob9obo3b3obobo2b5obo9b2o2bob3obob4o3b2o3bobobobo2b4ob3o2b2obo5b3ob2o2bobo2bo2bo3bo2b3o2b6obo3bob2ob4o2bo3bo7b2ob3o2bo3bob2o4bob2o2bob2obob2o2b7o2b3o2bobobobo5bo2bo2bo2bob2ob2obobob2o3b2o\$2ob4o2b2o5b3o4bob2obo3b2o5b4o2bo3bobo3b7ob2o5bo3b5o2bob2ob6o2b2ob2ob3ob2o2bobob2o2bo3b3ob4o2bob2o2b4ob2obob2ob2ob2o2b3o3bo2bo4bobob3ob2ob2ob2obo2b3o5b8o4bo3bo3b2o2b5ob2o2b3obo2bo2bobo4bob2obo\$3ob3o7b4o4bobob7obo2b2obo2bobo4b2o2b4o2b2obo9b2ob4ob2o2bo3b2ob2ob2obobob2o2b4o4b2ob5obo3bo3b2o2bo2bo3b2ob3o2bo2b4obo2b4obo3b2ob2o3b2obo2bo2b3o2bo2bo3bobo5bobo5b4o3bo8b2obo7b2o2bobo2b2obo\$b2o3b4ob4ob2ob3o2bob3obob2o2b5obo2b2obob2o5b2o2bo2b2o2b3o3bo2bob2ob2o3bob3obo7bo4b3obo2bo3b3o2bobo2bo2b2obobo2bob5ob2o3bo2bobob3o2b2o2bob2obob2obobo2bo2bob3ob2o3b2obo4bo8bob2obobo3b2ob4ob2ob3o2b2o2bo2b3ob2obo\$ob2obob2o5b4ob2obobo3bobob2o2b2o3bob4obo5bo2bo3b2obob2o2bo4bo5b3obobo4b5o4b2ob3obo4bo4bob7o2b2o2bo3bo3bo2bo2bo2b3o3b4ob3obo2bo2bo2bo3bobobo2bo3bo4bo8b3o4bo2bo5b2obob3o2b2o2b2obo5bobobob6o\$5b2o2bobob2ob3o5bob4obob2ob3o2bo2bob3o2b3o4bobob3o2b2o2bo2bob3obobo2bo3b5o2bo3bob4ob5o2bo3bo4b4ob2o3bo2bob4o5bo2bob4o3bob3ob3o3bobob2ob5obobo2bo2b5o2bobo3bo2bobo2b3o2b3ob3ob3o2b2obob3o2b2ob3o4bobo\$o4bobo2b3obo2bo5bo2b2obobo2bobo7b2ob3ob2ob2ob2o3bob2obo3b2o3bobob5o3b2ob3o4bobo2bo3bo2b2ob3ob3ob2o3b2o5bo4bo3b3o2b2o5b3o2bobo2bo2bob4ob2obo2b4o6b2ob2o5bobo3bob2obob2ob5ob2obob2obo5bobobo2bob3obob2obo\$ob2o6bobob5obo3bobobob5o2b2o2b2o2b2obob3o2b7o8b2obob2o2bo7b2o3bo2b2o5b3obo3b3o2bo2bo2bobo5b4obobo3b2o4b3obob3o2b2o2b2obo2bobo2bobo2bob2obobo2b3o3bobob2ob2o3bob4obobobob7ob5ob2ob2o2bo3b2o6bobo\$b2ob2o2bo3b4o9b2o3b6o2bobob2ob3o3b3o2b3o3b3o2b4obo3bo3b2obobo2bob5o2bo2b2o2b3o2b3o2b3o3b2o2bob2obo2b3obo3bo4bo4bobo3b4o2bo4bo4b3o4b3o3b2o2b2ob4obo3b2obo3bo2b3o6bobo2bo3bo2b3o2bob6ob2o2b2o\$bo2b5o6bo2b3ob2o3bo2b2ob2ob3o2b2o2bob2o4bo2bobo3b2o5b2o2bo2b3o2b3obo2bobo8b2o4b2o3bob4o2b2o2bo2b2obob3o3b2ob6ob7ob5o5b3ob4o2bo2bo2b3o3b2ob3obo3bobob3obob3o4b3o3bo2bob2o2b3o4b2o3b2o6b3o\$o2bo2bob3o2b3ob6ob2ob3obobobo4bobob2o4b3obo4bob4obob4obo2bo3b5o3b3o3b3o3bobo2bo3b5obobo2bo2b3obobo4b2o2bobo2b3ob2ob2ob2ob2o2bobobob2o2b2o3bo3bo6bo3bo4bo5bo2bo4bo6b3obo2bobob2o3b2o5b5ob2o2bob3o\$5o2b7o3bobobobob2o5b2obo4bobo3b4obo4b3obobobobo3b2o3bo2b3o3b3o2b3obo4bobo3bob2obo4bob2ob4o3b2obobob4o2bo2bo4b7o5bob2ob4obo2b2obo9b2obob2ob5o2bob2o4b3obo4bob3o2b3o2bo2b2o2bob2obobo3b3ob3o\$o2b3obobo2bob8obobobo5bobo2bo5bobo6b2o3b4o2bob2ob2obo4b2o3b2obo3b3o2b2obobob3obobo3bo2bo2bobob2o2bo2b2ob2o4b4obobo3bo2b2o2b4obobobo5b2o2bo2b3obob3o2bob2ob4ob4o2b2o3b2o4bo2bob2o2b3obo2b4o2bo2b2obob5o2bo\$3obo2b3o5b2o2bob2o2b4obob2obo4b4o2bobobobo5bo4b4obobo2b2o2b6ob2ob3o2b2o4b2ob5obo3b3o2bobob5ob3ob2o3b2o3bo2b3ob2obo2bo3b2o5bo3b2o4bo3b2ob4o5bo3b2o2bo3b3o3b2obob2o3bo6bob2o3b3ob2obobo2b4obobo2bo\$b3ob2ob2o3b2ob3o3b3o2bob2o2bobobo3b2o2bo3bo4b5o3bobo6bo3b3obo3b5obo5b2o3b2o2b2o2bo10bob2o2b2o3bob2o6bo5bob5obob2ob2o5bob5o4b2o5b3obo2b4ob3ob3o2b2o2b2o3bobob2o3bobo2bob2o2b3o3bo3bob7o\$bob3o4b3o3bo2b3ob2obo4bob2o3bo2bobo4b5ob3o4b4o2bobobob5obobob3obo2b5obo2b3o4bob2obo4b4o2bo5bo2bobo3b2ob2o2bo2bo3bo3b5ob2obo3b3ob3obobo2bo3bo2bob2ob2o2b3o3b3o4b3o4bob2o4b2o3b2ob3obobo2bobobo4b3o\$2obobobob2o2b2obo3b2o3b3o2b2o3bo4b4ob3o3bobo2bob4o3bo4b4ob5ob4o4b2o3bo3b2obob2o2b2o2bo3b5o5b2o2b2o2b2o4bobobo5b2obobo3b2o3b3ob3o2bo2b2obob3o3b3o2bobo5b3obobo2b8o9b2obobob2o3b2o4bob2o2bobobo\$3bobobo3b2o6bob2o6bo2b2o5bob4ob2o2bo2bobo3b3o2bobo9bo3bob6o2b3ob4o2b3o3bob7o2bob8o3bo2bo4bo2bob4o2bo2b2o4b3ob2obob3ob2o3bo5bo3b2o4b2o5bobo2b2o2bo12b2obobobo5bobobobobo2bobob2ob3o\$3o2b2o2b2o4bo2bo4bobo3b2ob3o2b5ob3o2b2o3b2ob3o2b2ob2ob2o2b4o2bob2o2b3o3b2o2bob2o2bo2bob2ob2o3bo3b2obobo2b3obo4bobo3b3o2b2ob2obob2ob3o3bo3b2o2b5o2b2o3bob2obob2obo2bo2bob3o9b2ob2obo3b3ob3ob2ob2o2bobob5o4b6o\$2ob2ob2obo2b2ob2obo3b2obo9b3o3bob2ob4ob2obobob2o3bob3o3bo2bo2bob5obo5bob7o2b2o4bob2o3bobo2b2ob2obo4b2o2b2ob3o8b2obob2obob2o3b2obo3bobo3bo2b5obobob2o2bo7b4ob5o5bobob6o3bo2b2ob2ob3o2bob3obob3o\$b9o2bob3obob3o3bob2obo2b2ob2obo2bobo2bobob2obo2b9ob2o2b5o2bob3o2bo2bobob3o4bob2o2b2o2b3obo2bob2obob2ob2o3bobo3b2o3b4obobo7bo2bo4b2obo2b2ob2o3bo3bo4bobobo4b2o8bobo6bobo2b3o2b2ob5ob8o4bo4bo\$2bo8bobob3obo7b6o4bob2o2b2obo5b5o4b2o3b4o5b2ob5ob3o2bob3o3bo2bobobo2b2o4bobo5bobob5ob3ob4obo4b2o3bo3b2obo4b3ob5o3bobo2bo2bo10b2o2b2obobo6bo4b2ob3ob2ob2o3b5o6b4obobob3o\$ob2o4b3o3bo2b2o2b2o6bo2b3o4bo3b2o2b3ob2obo3b4o2bobob4o7bobo3bobob4ob3o2b2o6bob3ob3obo2bobo2bo2bob2obobo2b2ob2o3b4o3bobob3o2b2ob2o2bobob2ob3o2bo2b2ob2o4bo3b6o3b2o4bob2o2b2o2bo3bobo3b4ob2o9bob3o\$b2o2bobob2o2bo3b2o9b2obo2bobo2bo3bo2bobo5b2o4b2o2bobo2bobo2b2ob3o9bob3o2bo2bo3bo2bo2b2ob2o2bob2o4bobob2ob4o2bob2o2bo9b2o2b2o2bo2b8obo2b2obo4b4obob4obo2b3obobo2b2obob4o4bo2bo2bobobob3o4b4o3bo2b2ob2o\$obo2bobob2o3b4o2bobobobobobo3bo2bo2b7ob2obo2bobob2o5bo2bo2b3o2bo2b2ob4obob3o5bobo2bo2b2o6b2obobo3bo2b2o2b3o3b3obo5bo3bo3bo3bo3bob2o3bob2o2bob2obob7ob3ob2ob4ob3o3b3ob2ob2o4b2obob3ob3obobob2o2b4ob2ob3ob2o\$7b3obo2b3ob2o2b3obo3b5o2bo3bobo2bob3obo3b2ob2obo2b3obo2b3obobo3bo4b2ob2obob4o4b3o2bob3ob2obobo3bo2bob2o2bobobobo2b3ob2obob2o6b2obobo6bo2bo6bob2ob2o4b4ob3o2b3ob2o3b3o2bo2b6obo2b4o3bo5b4o2b3ob2o\$2bob3o7b2o3bob4o2bobob2o2bobobo5bobo2b2obobob2o3b2obo2bo4bobob3ob6o2bob3ob4o3b2ob2ob2ob3ob2o3b3obo2bo4bob4obo3bo2bobob3o4b2obobo2b4o2bobo2bob2ob3o2bob4ob2o3bobob2obo2b3o7b2o7b3obobo4b3o4bob2o3bobo\$bob3o2b2ob3ob4o2b2obob2ob3o2bobob2obobob2o3b2ob3obo2bob4o6bob2o2b2o2b2o4bo4bob4o3bob3obob3o2bob3o2b5o5b2obob2ob2o4bobob4obobo2bobob3o8bo2b2obobobobobob2o2b3o3bo3bob2obo2b2o3bo2b2o3bo4bo2b2o2bobobobo4bob3o\$2bo2bob2o2b4ob3ob2o2b2o2bo3b2o2b5ob4o2b4ob3obobo3b6o2bob5obob2o2b5o3b2o3b3ob2o2b4o2bo2b6o2bob2o3b5obo2b2ob2ob3ob2o4bobob2o2b2o2bob10ob4ob2obob3o2bo2bobo2b7ob2obob2ob2o2bo2b4ob4o2b9o2bobo\$3bo2b2o2bo2b2o2bo2b3ob3obo4bobo3bo2b3o2bo2b2o4bo2b4o2b2obob3ob2o5bobo2bobobo3b2obob2o3bobo2bo2b2o3bob3ob3o4b3ob2obob2ob2o3b5o3b7ob2ob3obo3b3ob2o5b7o2bobo2bo3bo3b3o2bob2o3bo3b3ob3obo4bo3b3o2bo4b3o\$b2obo2bo3b2o2b2o11b5o2b2obo2bob2obob3obob2ob3ob3o2b4ob2ob4obo2bo2b3o3bo3b2o2bo2b7o2bo2bo3b5obob2ob2o2b2o3bob3ob2obo2b2ob2ob2ob4o2bo2bob2obo7b4o3bobo3b2o6bo3b2obo2b2ob3obo4bobob3o2bo3b3obobob3o2b2o\$obobobobo2b3ob3ob2o2b3obobo4b2o2b4ob2obo6b2o2b2obob4obobo2b2obo5bobo2bo2b2o2b2ob4ob2obo3b2ob2obob2ob2o4bob2o4b4ob2o2b2o2b2o3b2ob2o4bob4o5b2o4bobobo3bobobo6bo3b3obo3b2obo2b4o2bobo3b2o3b4o2bob3o3bobo2bobo\$ob3o2bo7bo2bo2bo3b2obob6ob5obo2b3obo2b3obobo2bob7o2b3o3b5obobo2bo2bo3bo2b3obob4obo2b2ob2obo2bo2b2obob2o2b2o2b4o4b3o2b2o2b2o2b2ob3ob3ob2ob3o2b2obo2b3obob5o2b2ob2o2b2o3b4o4bobob3ob4o2b5obobob2o4b2o3bo\$3bo2b2o6bo2bo3b3o6b3o2bo2b3o4b3obob2ob3ob2o2b2o3b5obobobobobo2b3o6b2o4bobo6b3o3bob2o4bob3o6bo3b2o2bo4b2obo2b6o5bob2o2b2obo2bobo4b2ob2o3bo2bo2b3o3b3o3bob2o2b6ob2ob4obob3o3bo2b2o2b7obobo\$b3ob2ob4obob9obob2o2b3ob2o6bobob7o4bo2b2ob4o4bo3bob6ob2ob5o3b3o2b6o2b2obob3o2b3o2b2o4bo6bobo3b3o3bo2bo2b2o4bobob3ob2ob4ob4o3b5o3bob5ob3obo3bo4bob3obo6b2ob3ob2obobo3bo8bob2o\$2o3bo2b3o2b3ob4obo3b2ob6obo2b4o3b5ob3o3bobobo2b2o3bo8bo2bob2ob2ob2ob5obobobo3b2ob5o2bo2bobobob3o2b5o3bobob2obo2bo2bobo2bo2b2o2bo3b6ob4o2bo2bobo2bob4o2b2o3b3obobo10b3o4b2obo5b3o2bobob2ob2obobo\$7bob2o3b2o2bo3b3ob2o2bo2bo2bo4b2obo2b4o2b3obo6bo6b4o5b2obo2bo5bo2bobo2bob2obobobo3bobo3bobob4ob4ob6o3b2ob4ob2obobobo12bob2o3b3o2b4ob2o2bobob3ob2obob3o3b3o2b2obobo3b2o4b2o3bo3bob2obob4o3b2o\$4obob5obo2b2o2b4o2bo4b3o2bob5obo2b3o2b2o2bob2ob4o2b2ob2o2bo2b5ob9obobo2bob2obo2b2obo4bobobobo2b4obobob6o2b3o2bob3o2b3obo2b2obo3b4ob3obo5bob2o4b3o4bo2b4o3b6o3b2obo4bo2b2ob2o6bo4b2ob2o3b2obo\$ob3ob5o2b4o4bob2obo2bo5b2o2b2o6bo3bo2bob2ob2ob3o3bobobobo3b3obob2ob3o2b2o2b2ob2o2bob4o3bobo3bobo4bobob7o2b2o3b2obobobob2ob3o2b2ob3ob4o6b3o5bo2bo3b3o2b2ob2ob3ob2o3b2o2bobo6bobobobobo4bo2bob4o2b3ob2o\$4b2o3bo2bobobo2bo2bob5ob3o5bo5bob2o2b3o2bo2bo5bob2o3bobobobo2bo3b3ob3o3bob2o3bob2o4b3o2bobo3bo2bob2o3b2obo3b4obob2ob2obo2b2o4bo2b2o3b2o3bo3bo3bo6bob2ob3o2b3ob2o4bo2bo4bobob3ob3o2bo4bo3b3ob4ob5obo\$bo3bo6b4ob2o11b2obo2bo2bobo2bo2bo2b3o3b3ob3obo2b4o3b2o4b3ob3ob2o4bobobo2bo5b6obob6ob2o4bo4b2o5bo2bo2bobobo5b2o5b2obobo3b2o5b3ob4ob2o3bob2o4b7obob2o3bo2bobo2b2obobobobo2b2o2b5obobob3o\$o2bo2b3obobo3bob4o2b2obobob3o2bo2b2ob2o4b2o2b3o2bo3bob2ob3ob3obo3b2o5b4o2bob2obo3bo4bo2b3ob3o2bob3o2b3o3b7ob3obo3b2obobo2b4o2bob2o2bobobob2o5bo4bob4ob2ob2o2bo2bob6obob3o2bobo2b2o5bobo2bob2o6bob2ob4o\$bo3b2obob6obob3ob5obobo2b3obob3o2b2o4b8obobo2b3obob2obob2obo3b6o2b3ob2obo3b2o4bobo2bobo2bo3b4o3b2ob2obob2o3b2o4b2obobobo2bob3o7b4ob2o2bob4o2b2ob4o3bobob4ob3obo2b2ob3obobo2bobo3bo2b3obobo5bo2bo3b2o\$o4bo3bob3o3b3o2b4ob4obo2bo2b3obob4ob6o2b3o3bo3b5o4b2o2bo2bo3bob3o2b3ob2o3bobo2b4o2b6obob2obobobo2b3obo3b4obob4o2b3ob2ob2o4b2o3bobob3o3bobob2o6b3ob3ob2ob3o2bo2bob3o3b2obo5bobob2o3bobo2bob4o2bobo\$3bobo2b3o8bob4o3bo2bo2bo2bo2bo2b2obobo2bo2bo4bo5b4ob5ob2o2bo2b3o2b2ob5o6b2obobo9bo3b2obob2o5b2obo2bo2b2o5bob2o2b3o2bo2b3o2b5o3bo3bo3b4ob5ob3obo2bo2b2ob2ob5o2b4obob4o2b3o3b3obo6bo5bo\$obo2b2o3bo2b3o2b3o3bo4b3obobobo2bobo2b2o2b2obob3o4b2o3b3obobo2bobo4bobob2ob2obo2b3o3b2o2bobob4obo3bobob3o2bo2b2o3b5ob3ob4obob3obob2o6bo2b2ob2obo2b3o5bob3ob4ob3ob3o4bo2b3obo2bo4b2o6bobobo3bob2obobob3obo\$o3bo2b2o2b5o2bo4bo3bo2bob2ob6obo5b2o3b2ob2ob2obo3bo2bo5bo2bob2ob4o2b3o2bob2ob2o3bobo2b2o6bo4bob2o2b2o3b6o3bo2b3o2bo2bob2o2b2o2bobob2o3bob4obo2bo3bo4b2o3bo3b3ob3ob5ob3obobobo3bo4b2obo4b2o4bob2o2bo!`
stop drop and goll

_zM

Posts: 151
Joined: June 26th, 2016, 3:07 pm

Requesting help to write it myself:
How can I code a script that, for each cell in an oscillator it
- Calculates the oscillation period for that particular cell (i.e. if it is on-on-off-off it's still p4) [probably easy and this is the important bit]
(potentially specifying "trivial" if max(Period_cell)<Period_total)

- Determines whether each highest-period oscillating cell is connected via a number of adjacent P-period cells (P > 1) to itself if and only if its period is a factor of the highest oscillating cell period [secondary point, to determine whether the highest period stators are interacting or non-interacting]
SoL : FreeElectronics : DeadlyEnemies : 6a-ite
what is “sesame oil”?

Rhombic

Posts: 953
Joined: June 1st, 2013, 5:41 pm

Rhombic wrote:Requesting help to write it myself:
How can I code a script that, for each cell in an oscillator it
- Calculates the oscillation period for that particular cell (i.e. if it is on-on-off-off it's still p4) [probably easy and this is the important bit]
(potentially specifying "trivial" if max(Period_cell)<Period_total)...

Roughly,

1) Find the period P of the whole oscillator;
2) Calculate the sequence of ONs and OFFs for each cell in turn;
3) For each sequence, for each possible subperiod Q, see if the sequence is made up of P/Q identical copies of the same subsequence.

There are various ways to optimize this, mostly by skipping cells that never change -- one easy way would be to start the pattern in state 5 LifeHistory, run the pattern for P ticks, and then ignore any cells that are still state-0 or state-5.

Maybe this part of Jason Summers' Oscillizer code would make a decent outline -- especially the "calculate subperiods" section. Full source code is available here:

`// returns 0 only if the pattern is completely emptyint calculate_things(void){   int x,y,i,p,f;   int any_life;   // temp flag   int flag;   int thisstate,nextstate;   int heat_total;   int pop_total_allp; // sum of pop in all generations   for(i=0;i<period;i++) {      pop_phase[i]=0;      heat_phase[i]=0;   }   // max extents point to the extreme cells, not one past them   extent_x_max=extent_y_max=0;   extent_x_min=width-1;   extent_y_min=height-1;   pop_total=0;   // -- pass 1 --   // init all cells that are ever ON to the full period,   // and cells that are never ON to zero.   // also, calculate populations, etc.   for(y=0;y<height;y++) {      for(x=0;x<width;x++) {         any_life=0;         for(p=0;p<period;p++) {            thisstate=getcell(p,x,y);            nextstate=getcell((p+1)%period,x,y);            if(thisstate) {               pop_phase[p]++;               any_life=1;               if(x<extent_x_min) extent_x_min=x;               if(x>extent_x_max) extent_x_max=x;               if(y<extent_y_min) extent_y_min=y;               if(y>extent_y_max) extent_y_max=y;                           }            if(thisstate!=nextstate) heat_phase[p]++;         }         if(any_life) {            cellperiod[y*width+x]= period;            pop_total++;         }         else {            cellperiod[y*width+x]= 0;         }      }   }   if(pop_phase[0]<1) { return 0; } // no cells!   heat_total=0;   pop_total_allp=0;   pop_min=pop_max=pop_phase[0];   heat_min=heat_max=heat_phase[0];   for(i=0;i<period;i++) {      pop_total_allp+=pop_phase[i];      if(pop_phase[i]<pop_min) pop_min=pop_phase[i];      if(pop_phase[i]>pop_max) pop_max=pop_phase[i];      if(heat_phase[i]<heat_min) heat_min=heat_phase[i];      if(heat_phase[i]>heat_max) heat_max=heat_phase[i];      heat_total+=heat_phase[i]++;   }   heat_avg = ((double)heat_total)/((double)period);   pop_avg = ((double)pop_total_allp)/((double)period);   // calculate factors of period (including 1 and period)   // calculate subperiods   for(f=1;f<=(period/2);f++) {  // for each factor except the  full period      if(period%f) continue; // not a possible subperiod      for(y=0;y<height;y++) {   // for each cell...         for(x=0;x<width;x++) {            if(cellperiod[y*width+x]==period) { // skip cells that are never on,                                               //and those already calculated                flag=1;                for(p=0;p<=(period-f-1);p++) {                   if(getcell(p,x,y)!=getcell(p+f,x,y)) {                     flag=0;                     break;  // not this subperiod                   }                }                if(flag) {                   cellperiod[y*width+x]=f;                }            }         }      }   }   // count up the subperiod populations   for(i=0;i<=period;i++) {      pop_subperiod[i]=0;   }      for(y=0;y<height;y++) {   // for each cell...      for(x=0;x<width;x++) {         i=cellperiod[y*width+x];         if(i) {            pop_subperiod[i]++;         }      }   }   // find the highest subperiod with nonzero population   period_nontrivial=0;   for(i=1;i<=period;i++) {      if(pop_subperiod[i]) period_nontrivial=i;   }   pop_rotor=pop_total-pop_subperiod[1];   return 1;}`

dvgrn
Moderator

Posts: 4415
Joined: May 17th, 2009, 11:00 pm

Can anybody add functionality so every rule has possibility for gliders? (draw 4 random numbers from the seed function, and pick from these: B2c, B2e, B3a, B3i, none) I've no idea how to program python (below shows I've disallowed boundary expanding transitions)
`import golly as gimport randomrandom.seed(g.getstring("Random seed(any string): "))prob = 0.5isotropicsetS = isotropicsetB = {"0",                 "1c", "1e",                 "2c", "2e", "2k", "2a", "2i", "2n",                 "3c", "3e", "3k", "3a", "3i", "3n", "3y", "3q", "3j", "3r",                 "4c", "4e", "4k", "4a", "4i", "4n", "4y", "4q", "4j", "4r", "4t", "4w", "4z",                 "5c", "5e", "5k", "5a", "5i", "5n", "5y", "5q", "5j", "5r",                 "6c", "6e", "6k", "6a", "6i", "6n",                 "7c", "7e",                 "8"}isotropicsetB.remove("2a")isotropicsetB.remove("1e")isotropicsetB.remove("1c")isotropicsetB.remove("0")isotropicsetB.remove("2c")isotropicsetB.remove("2e")isotropicsetB.remove("3a")isotropicsetB.remove("3i")rulestr = "B"for i in isotropicsetB:    if random.random() > prob:        rulestr += irulestr = rulestr + "/S"for i in isotropicsetS:    if random.random() > prob:        rulestr += ig.setrule(rulestr)# g.setclipstr("Original form of rule: "+rulestr+"/nCanonical form:"+g.getrule())`
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

drc wrote:Can anybody add functionality so every rule has possibility for gliders? (draw 4 random numbers from the seed function, and pick from these: B2c, B2e, B3a, B3i, none)

Pretty certain there's errors in this, particularly in lines 31 and 41 (with what I presume is the wrong OR), but this should guarantee that patterns can expand both orthogonally and diagonally:
`import golly as gimport randomrandom.seed(g.getstring("Random seed(any string): "))prob = 0.5isotropicsetS = isotropicsetB = {"0",                 "1c", "1e",                 "2c", "2e", "2k", "2a", "2i", "2n",                 "3c", "3e", "3k", "3a", "3i", "3n", "3y", "3q", "3j", "3r",                 "4c", "4e", "4k", "4a", "4i", "4n", "4y", "4q", "4j", "4r", "4t", "4w", "4z",                 "5c", "5e", "5k", "5a", "5i", "5n", "5y", "5q", "5j", "5r",                 "6c", "6e", "6k", "6a", "6i", "6n",                 "7c", "7e",                 "8"}isotropicsetB.remove("2a")isotropicsetB.remove("1e")isotropicsetB.remove("1c")isotropicsetB.remove("0")isotropicsetB.remove("2c")isotropicsetB.remove("2e")isotropicsetB.remove("3a")isotropicsetB.remove("3i")rulestr = "B"x = random.random()y = random.random()while x <= prob || y <= prob:    x = random.random()    y = random.random()if x > prob:    rulestr += "2e"if y > prob:    rulestr += "3a"x = random.random()y = random.random()while x <= prob || y <= prob:    x = random.random()    y = random.random()if x > prob:    rulestr += "2c"if y > prob:    rulestr += "3i"for i in isotropicsetB:    if random.random() > prob:        rulestr += irulestr = rulestr + "/S"for i in isotropicsetS:    if random.random() > prob:        rulestr += ig.setrule(rulestr)# g.setclipstr("Original form of rule: "+rulestr+"/nCanonical form:"+g.getrule())`

Check it before you run it.
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Posts: 1673
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

I would like to see a script that allows you to input a minimum rule, some additional optional transitions, and then the script searches the input pattern (pref. the pattern on the current layer) for spaceships, for example:
Base rule: B3-ckq/S2ace3aeiy
Input pattern:
`x = 156, y = 7, rule = B3-ckq/S2ace3aeiybo49bo49bo48b3o\$3o47b3o47b3o48bo\$3o47b3o47b3o\$154b2o\$154b2o\$b2o49b2o49b2o\$b2o49b2o49b2o!`

ive asked for this like 5 times lmao what am i doing
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

drc wrote:I would like to see a script that allows you to input a minimum rule, some additional optional transitions, and then the script searches the input pattern (pref. the pattern on the current layer) for spaceships.

I'm afraid I don't quite understand exactly what is being asked here.
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Posts: 1673
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Ah shoot, so pretty much it searches a rulespace and censuses the results in each rule, only finding spaceships.
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

drc wrote:Ah shoot, so pretty much it searches a rulespace and censuses the results in each rule, only finding spaceships.

So apgsearch, except you have lots of hauls in different rules queued and you only save xq##_ results?
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Posts: 1673
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

drc wrote:Ah shoot, so pretty much it searches a rulespace and censuses the results in each rule, only finding spaceships.

So apgsearch, except you have lots of hauls in different rules queued and you only save xq##_ results?

instead of random soups it's just one pattern that is processed in each rule
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

I think I see. So for example if input is
`x=3, y=3, rule=B/S012345678bob\$o2b\$3o`

It would return
B3/S23
B38/S23
B38/238
etc.
Proud owner and founder of Sakagolue
`x = 17, y = 10, rule = B3/S23b2ob2obo5b2o\$11b4obo\$2bob3o2bo2b3o\$bo3b2o4b2o\$o2bo2bob2o3b4o\$bob2obo5bo2b2o\$2b2o4bobo2b3o\$bo3b5ob2obobo\$2bo5bob2o\$4bob2o2bobobo!`

(Check gen 2)

Saka

Posts: 2426
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X

Assuming this hasn't been requested before, I'd like a script that takes in an RLE of a pattern, and gives the minimum and maximum rules, both totalistic and non totalistic if possible, in which it exhibits identical behaviour.
2c/n spaceships project

Current priorities: see here
muzik

Posts: 2721
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

What about a script where you provide spaceships and test objects and it attempts to find HBK-esque reaction
This post was brought to you by the letter D, for dishes that Andrew J. Wade won't do. (Also Daniel, which happens to be me.)
Current rule interest: B2ce3-ir4a5y/S2-c3-y

drc

Posts: 1665
Joined: December 3rd, 2015, 4:11 pm
Location: creating useless things in OCA

Have there been any attempts to make a replicator search program?
2c/n spaceships project

Current priorities: see here
muzik

Posts: 2721
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Well, there's Catagolue (shouldn't be too hard to write a script that scans textcensus for zz_REPLICATOR (and maybe other zz classes or even PATHOLOGICAL since replicators tend to crash into ash)
I like making rules
fluffykitty

Posts: 324
Joined: June 14th, 2014, 5:03 pm

Are there any Oscillizer-like programs that support higher periods?
2c/n spaceships project

Current priorities: see here
muzik

Posts: 2721
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Can someone make a mod of the Glider Database read script that will allow non-totalistic searches, like if I wanted to know if there were ships in B3-k/S2-n3. New values for the rules would have to be put in, but I can do that, I just need the ability to read a file with non-totalistic rules instead of totalistic, like the .db file, and be able to search them. If anyone needs clarification, I can probably answer it.
Things to work on:
- Find a (7,1)c/8 ship in a Non-totalistic rule (someone please search the rules)
- Find a C/10 in JustFriends
- Find a C/10 in Day and Night
AforAmpere

Posts: 582
Joined: July 1st, 2016, 3:58 pm

What about a script that generates a period n glider loop?
2c/n spaceships project

Current priorities: see here
muzik

Posts: 2721
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

A script that generates a version of DeadlyEnemies for a given non-totalistic rule?
SoL : FreeElectronics : DeadlyEnemies : 6a-ite
what is “sesame oil”?

Rhombic

Posts: 953
Joined: June 1st, 2013, 5:41 pm

Ok what about a script that converts an none-symmetry rule table to MAP (and vice versa maybe)?
Proud owner and founder of Sakagolue
`x = 17, y = 10, rule = B3/S23b2ob2obo5b2o\$11b4obo\$2bob3o2bo2b3o\$bo3b2o4b2o\$o2bo2bob2o3b4o\$bob2obo5bo2b2o\$2b2o4bobo2b3o\$bo3b5ob2obobo\$2bo5bob2o\$4bob2o2bobobo!`

(Check gen 2)

Saka

Posts: 2426
Joined: June 19th, 2015, 8:50 pm
Location: In the kingdom of Sultan Hamengkubuwono X

Saka wrote:Ok what about a script that converts an none-symmetry rule table to MAP (and vice versa maybe)?

The following script uses the rule in the current Golly universe to test what happens in each of the 512 possible neighborhood cases, and builds a bitstring from that.

If anyone sees any problems with this script, let me know -- besides the item labeled KNOWN ISSUE in the comments, that is. Golly automatically emulates B0 rules to avoid flickering, and that means that this script sees a different rule when it runs the 512 neighborhood samples.

That problem is dealt with by checking for "B0" in the rule string that Golly reports... but that doesn't solve the case where it's already a MAP rulestring -- or a custom-named rule defined by a rule table, that is actually a Lifelike B0 rule in disguise. Luckily I don't think there are many custom-named B0 rules out there. If someone wants to contribute some code to check for that situation (and maybe just throw an error), I'd be grateful.

`-- make_MAP_rulestring_v1.0.lualocal g = golly()local gp = require "gplus"local split = gp.split-- local pattern = gp.patternfunction fixrule(s)  return (gp.split(s,":")) -- remove bounded grid spec, if anyendg.addlayer("temp") -- keep and test the current rulefixedrule=fixrule(g.getrule())g.setrule(fixedrule)bitlist={{-1,-1,1},{0,-1,2},{1,-1,4},{-1,0,8},{0,0,16},{1,0,32},{-1,1,64},{0,1,128},{1,1,256}}for j = 1, 9 do    x, y, bit = table.unpack(bitlist[j])    for i=0, 511 do        if i&bit>0 then g.setcell(i*5+x,y,1) end    endendg.run(1)bits={}ind=1local rulestr, invstr, revinvstr="","",""for k=0,2555,5 do    if g.getcell(k,0)==1 then        rulestr=rulestr.."1"        invstr=invstr.."0"        revinvstr="0"..revinvstr       else        rulestr=rulestr.."0"        invstr=invstr.."1"        revinvstr="1"..revinvstr    endend-- build base64 lookup tablelocal lookupstr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"bdict={}for i=1,64 do    local w=""    for j=0,5 do        if (i-1)&2^j>0 then w="1"..w else w="0"..w end    end    bdict[w]=lookupstr:sub(i,i)end-- decide whether to use standard, inverted, or inverted-reversed bitstring, based on fixedrule-- (assuming Golly is correctly simulating rules with B0, with or without S8, to avoid strobing)---------------------- KNOWN ISSUE ----------------------------- the following won't work for anisotropic non-totalistic rules defined by MAP strings,-- so we'll have to decode the MAP rulestring into a 512-bit string in that case, check first and last digits...-- but in that case, we already know the string, so why are we running this script anyway?if string.match(fixedrule,"B0") then rulestr = string.match(fixedrule,"S.*8") and revinstr or invstr endlocal s = rulestr.."0000" -- pad so that len mod 6=0base64="MAP"for i=1,511,6 do base64=base64..bdict[s:sub(i,i+5)] end    g.setclipstr(rulestr.."\n"..base64)g.show("Copied to clipboard: "..base64)-- Life = 'MAPARYXfhZofugWaH7oaIDogBZofuhogOiAaIDogIAAgAAWaH7oaIDogGiA6ICAAIAAaIDogIAAgACAAIAAAAAAAA'`

The vice-versa case is a little trickier, mostly because ninety-nine point I-don't-know-how-many-nines percent of possible MAP rules don't have a non-MAP equivalent.

However, I think it's not too hard a job to get an isotropic rule string out of a MAP string, using Golly and a modified version of the above script. Start by building a lookup table for each of the 51 neighborhoods, by running the script with "B0/S", "B1e/S", "B1c/S", and so on up to "B/S8", and retrieve the 512-byte contents of the "rulestr" variable instead of the base64 equivalent.

Then for each string, you check the (decoded) input MAP bitstring to see if it has 1's in all the same places. If so, subtract them from the input MAP bitstring, and add the appropriate isotropic bit to the output rule string. When you've checked all 51 isotropic neighborhoods, then if there are no 1's left in the input MAP bitstring, then the output rulestring is a correct translation. If there are any 1's left, then the MAP bitstring was anisotropic and no translation is possible.

Luckily Golly can do the rest, in terms of making a canonical isotropic or Life-like rule string out of the messy string generated by the above method. For example:

`import golly as gg.setrule("B3c3e3k3a3i3n3y3q3j3r/S2c2e2k2a2i2n3c3e3k3a3i3n3y3q3j3r")g.note(g.getrule())`

dvgrn
Moderator

Posts: 4415
Joined: May 17th, 2009, 11:00 pm

I think there is a very clear need for a MAP-rotate script now (i.e. outputs a MAP rule that is just like the input but rotated 90º).
That plus some more intuitive way to edit MAP rules (i.e. B37e(left)/S23 should be easier to create than going the whole way from scratch).
SoL : FreeElectronics : DeadlyEnemies : 6a-ite
what is “sesame oil”?

Rhombic

Posts: 953
Joined: June 1st, 2013, 5:41 pm

Rhombic wrote:I think there is a very clear need for a MAP-rotate script now (i.e. outputs a MAP rule that is just like the input but rotated 90º).

Okay, that's not too terribly difficult. Each of the 512 bits in a MAP bitstring corresponds to a specific nine-bit pattern, as described in the LifeWiki Rule integer article.

So all you have to do is

-- for each "1" in the 512-bit input MAP bitstring,
• find the position index (a number from 0 to 511) and convert it to binary
• make a new binary number according to the Rule integer diagram:
starting with bits in order 256, 128, 64, 32, 16, 8, 4, 2, 1,
shuffle them to order 4, 32, 256, 2, 16, 128, 1, 8, 64
• in the output MAP bitstring, put a 1 in the position represented by the new binary number
When you've done that for all the 1s in your old MAP bitstring, you'll have a new MAP bitstring that can be encoded using the last few lines of the above Lua script:

`-- build base64 lookup tablelocal lookupstr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"bdict={}for i=1,64 do    local w=""    for j=0,5 do        if (i-1)&2^j>0 then w="1"..w else w="0"..w end    end    bdict[w]=lookupstr:sub(i,i)endlocal s = rulestr.."0000" -- pad so that len mod 6=0base64="MAP"for i=1,511,6 do base64=base64..bdict[s:sub(i,i+5)] end`

That's the spirit of the thing, anyway. I might have a detail wrong here or there...!

Rhombic wrote:That plus some more intuitive way to edit MAP rules (i.e. B37e(left)/S23 should be easier to create than going the whole way from scratch).

That would be nice, though I'm not quite sure what "intuitive" would look like exactly. One way would be another modification of the above make_MAP_rulestring_v1.0.lua script: try adding a g.exit() just before the "g.run(1)" line, and you'll see the test pattern that the script uses to determine what happens to all the neighborhoods.

Maybe this test pattern could be converted to LifeHistory, and a user could just mark which center cells should turn ON with state 3, and which should turn OFF with state 4?

dvgrn
Moderator

Posts: 4415
Joined: May 17th, 2009, 11:00 pm