Current section
Files
Jump to
Current section
Files
gen/test/customized_network_test.erl
-module(customized_network_test).
-compile(no_auto_import).
-export([neural_network_of_to_json_test/0, neural_network_prediction_test/0, neural_network_normal_errors_test/0, neural_network_zero_errors_test/0, fit_neural_network_prediction_test/0, neural_network_to_svg_test/0]).
-spec my_neural_network() -> gleam_zlists@interop:z_list(gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron())).
my_neural_network() ->
gleam_synapses@neural_network:of_json(
<<"[[{\"activationF\":\"sigmoid\",\"weights\":[0.9211880913772268,0.027180243817137795,0.10852652658514339,-0.20162813099768573,-0.10075233916843396]},{\"activationF\":\"sigmoid\",\"weights\":[-0.9489930079469029,-0.26015677306584273,-0.6978873003833059,0.2874994065396639,0.7276149322065253]},{\"activationF\":\"sigmoid\",\"weights\":[-0.9357227175449083,-0.9155202030305005,-0.9129309852279106,-0.6978999469719491,0.8063910194692945]},{\"activationF\":\"sigmoid\",\"weights\":[0.47588465535587576,-0.5681549645809776,0.9815364553014789,-0.6175472916357287,0.6688055519864093]},{\"activationF\":\"sigmoid\",\"weights\":[-0.18065888278217646,-0.8943132277876955,0.294939737903549,-0.13946653126709108,-0.975106575568284]},{\"activationF\":\"sigmoid\",\"weights\":[0.4437184379986423,0.2690674140331535,0.32810615530021336,0.17323902449022643,0.09221847729601618]}],[{\"activationF\":\"identity\",\"weights\":[-0.8928384189584146,-0.3161167802991376,-0.21496286920606544,0.25806133542967125,0.8131999422319118,0.3867614051417534,0.45388143955720217]},{\"activationF\":\"identity\",\"weights\":[-0.5964794872043058,0.7903102784527913,-0.9051888424151342,-0.09122610135386999,0.6535569969369026,-0.22748365874317633,-0.13615987609385183]},{\"activationF\":\"identity\",\"weights\":[0.6208093403826789,0.33538576542866516,0.753380386023317,-0.2055709809859254,0.9488128412675767,-0.07338684978278609,-0.7968643692136412]},{\"activationF\":\"identity\",\"weights\":[-0.35625015691520523,-0.06294831714455151,-0.5599640923034961,-0.35867440290460384,0.5199823465293354,0.6691922308539804,-0.8999692624692617]},{\"activationF\":\"identity\",\"weights\":[-0.26545912729664556,0.37560221411197214,0.2923244847426285,-0.8896329641128919,0.5311148426965802,0.6182392962661842,-0.20406638996276305]},{\"activationF\":\"identity\",\"weights\":[-0.18786441034717605,-0.5055219662230839,0.04524373070462362,-0.11891872316176122,-0.9069098420319777,-0.49189194418627435,0.9655404131465519]},{\"activationF\":\"identity\",\"weights\":[-0.2337494582987365,0.03348554207672061,0.5612844635907202,-0.7847214826295577,0.4115511461873751,-0.5715595557401487,-0.5608001287671116]},{\"activationF\":\"identity\",\"weights\":[0.14039252306721073,0.896464828302568,-0.8349609673341298,-0.3124209022398132,0.6436975813480024,-0.818871154230379,0.5071867885500334]}],[{\"activationF\":\"leakyReLU\",\"weights\":[-0.1496727007713341,-0.9446600359811137,0.09017935830009893,-0.07576012821021783,0.07030263961505323,-0.11406885695371116,-0.7461112874103033,0.6833332651740873,-0.8010245653234098]},{\"activationF\":\"leakyReLU\",\"weights\":[0.09559309427323814,-0.7879378967496491,-0.8000009310923726,0.7686306359582724,-0.25249222972726404,-0.014427663912890187,-0.11461181526757702,0.21053088617197546,-0.8854886060416924]},{\"activationF\":\"leakyReLU\",\"weights\":[0.8977806470434868,0.2759342617685159,0.3579625812601752,-0.2766215427970271,0.45365535947447677,0.16974844709537806,-0.06753778989996984,-0.7966183698132514,0.10365561824201519]},{\"activationF\":\"leakyReLU\",\"weights\":[0.15614262821491143,0.7307043329040679,-0.3024535882183548,0.8996197510630033,-0.5483748571969123,-0.4933601809685686,0.8877285560646404,-0.2549474709795905,-0.05003354274804406]},{\"activationF\":\"leakyReLU\",\"weights\":[0.20640525641997542,-0.7982126402919107,-0.4301615753543542,0.6235826001059404,0.39016787049890334,0.4847542393708937,0.041606408464528455,-0.5472453822430938,-0.7980597656641701]}],[{\"activationF\":\"tanh\",\"weights\":[-0.4203698112641414,0.7385922108576337,-0.17832762689312132,0.9771813932353159,-0.39248885855237936,0.44173755976288676]},{\"activationF\":\"tanh\",\"weights\":[0.6408935521820589,-0.1255305117848784,0.5138918346393466,-0.8575752178510132,-0.37135956253563385,-0.06644905302411086]},{\"activationF\":\"tanh\",\"weights\":[0.8661031205839747,0.346207271189116,-0.4354090876965633,0.005500142063942892,0.10443723474592459,-0.9447855799384712]}]]"/utf8>>
).
-spec input_values() -> list(float()).
input_values() ->
[1.0, 0.5625, 0.511111, 0.47619].
-spec expected_output() -> list(float()).
expected_output() ->
[0.4, 0.05, 0.2].
-spec prediction() -> list(float()).
prediction() ->
gleam_synapses@neural_network:prediction(
my_neural_network(),
input_values()
).
-spec my_fit_network() -> gleam_zlists@interop:z_list(gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron())).
my_fit_network() ->
gleam_synapses@neural_network:fit(
my_neural_network(),
0.01,
input_values(),
expected_output()
).
-spec neural_network_of_to_json_test() -> gleam@should:expectation().
neural_network_of_to_json_test() ->
Layers = fun() -> [4, 6, 5, 3] end,
Activation_f = fun(Layer_index) -> case Layer_index of
0 ->
gleam_synapses@activation_function:sigmoid();
1 ->
gleam_synapses@activation_function:identity();
2 ->
gleam_synapses@activation_function:leaky_re_lu();
_ ->
gleam_synapses@activation_function:tanh()
end end,
Weight_init_f = fun(_) -> minigen:run(minigen:float()) end,
Just_created_neural_network_json = gleam_synapses@neural_network:to_json(
gleam_synapses@neural_network:customized_init(
Layers(),
Activation_f,
Weight_init_f
)
),
gleam@should:equal(
gleam_synapses@neural_network:to_json(
gleam_synapses@neural_network:of_json(
Just_created_neural_network_json
)
),
Just_created_neural_network_json
).
-spec neural_network_prediction_test() -> gleam@should:expectation().
neural_network_prediction_test() ->
gleam@should:equal(
prediction(),
[-0.013959435951885419, -0.16770539176070562, 0.6127887629040737]
).
-spec neural_network_normal_errors_test() -> gleam@should:expectation().
neural_network_normal_errors_test() ->
gleam@should:equal(
gleam_synapses@neural_network:errors(
my_neural_network(),
0.01,
input_values(),
expected_output()
),
[-0.18229373795952497,
-0.10254022760223279,
-0.09317233470223074,
-0.08680645507894617]
).
-spec neural_network_zero_errors_test() -> gleam@should:expectation().
neural_network_zero_errors_test() ->
gleam@should:equal(
gleam_synapses@neural_network:errors(
my_neural_network(),
0.01,
input_values(),
prediction()
),
[0.0, 0.0, 0.0, 0.0]
).
-spec fit_neural_network_prediction_test() -> gleam@should:expectation().
fit_neural_network_prediction_test() ->
gleam@should:equal(
gleam_synapses@neural_network:prediction(
my_fit_network(),
input_values()
),
[-0.006109464554744089, -0.17704281722371465, 0.6087944183600162]
).
-spec neural_network_to_svg_test() -> gleam@should:expectation().
neural_network_to_svg_test() ->
gleam@should:equal(
gleam_synapses@neural_network:to_svg(my_neural_network()),
<<"<svg width=\"360.0\" height=\"288.0\"><line stroke-opacity=\"0.938516431459781\" x1=\"60.0\" y1=\"80.0\" x2=\"120.0\" y2=\"80.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.027691527574275766\" x1=\"60.0\" y1=\"112.0\" x2=\"120.0\" y2=\"80.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.11056800386676366\" x1=\"60.0\" y1=\"144.0\" x2=\"120.0\" y2=\"80.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.20542092951173746\" x1=\"60.0\" y1=\"176.0\" x2=\"120.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.10264757730010944\" x1=\"60.0\" y1=\"208.0\" x2=\"120.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9668443824181953\" x1=\"60.0\" y1=\"80.0\" x2=\"120.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2650505456630601\" x1=\"60.0\" y1=\"112.0\" x2=\"120.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7110151605820386\" x1=\"60.0\" y1=\"144.0\" x2=\"120.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2929075175830922\" x1=\"60.0\" y1=\"176.0\" x2=\"120.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7413019947211624\" x1=\"60.0\" y1=\"208.0\" x2=\"120.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9533244664432777\" x1=\"60.0\" y1=\"80.0\" x2=\"120.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9327419252597179\" x1=\"60.0\" y1=\"112.0\" x2=\"120.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.930104002043922\" x1=\"60.0\" y1=\"144.0\" x2=\"120.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7110280450638884\" x1=\"60.0\" y1=\"176.0\" x2=\"120.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8215599279209773\" x1=\"60.0\" y1=\"208.0\" x2=\"120.0\" y2=\"144.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.4848364549126276\" x1=\"60.0\" y1=\"80.0\" x2=\"120.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5788424479928959\" x1=\"60.0\" y1=\"112.0\" x2=\"120.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"1.0\" x1=\"60.0\" y1=\"144.0\" x2=\"120.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6291638871895483\" x1=\"60.0\" y1=\"176.0\" x2=\"120.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6813863594918498\" x1=\"60.0\" y1=\"208.0\" x2=\"120.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.18405723170688257\" x1=\"60.0\" y1=\"80.0\" x2=\"120.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9111360285777743\" x1=\"60.0\" y1=\"112.0\" x2=\"120.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.30048780797750224\" x1=\"60.0\" y1=\"144.0\" x2=\"120.0\" y2=\"208.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.14209001664054743\" x1=\"60.0\" y1=\"176.0\" x2=\"120.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9934491687002904\" x1=\"60.0\" y1=\"208.0\" x2=\"120.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.4520651633487767\" x1=\"60.0\" y1=\"80.0\" x2=\"120.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2741288034487822\" x1=\"60.0\" y1=\"112.0\" x2=\"120.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3342781142035479\" x1=\"60.0\" y1=\"144.0\" x2=\"120.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.17649779950049443\" x1=\"60.0\" y1=\"176.0\" x2=\"120.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.09395318614802879\" x1=\"60.0\" y1=\"208.0\" x2=\"120.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9096334773263001\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3220632087496356\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.21900650561169388\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2629156910431898\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.828496932375413\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.39403671972933463\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.46241933970531185\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"48.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6076997792416148\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8051766943389256\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9222162228677544\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.09294214276111622\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.665850966010389\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.231762821966001\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.1387211604402715\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"80.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6324872978783018\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.34169466005789\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7675521188786781\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.20943794789851622\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9666608266487148\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.07476731952889648\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8118540731825232\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.36295152868854275\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.06413242911616251\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5704974983649519\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3654213768294903\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5297636615744679\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6817803121214057\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9168984581350432\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.27045264173617456\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.38266761472105076\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.29782335965589896\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9063677251189222\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5411055695668974\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.629868909022123\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2079050542244853\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.191398301441054\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.515031269080895\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.0460948041820077\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.12115568659671978\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9239695959671924\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5011448546097962\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9837030585379393\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"208.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.23814648659885015\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.03411543391573319\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5718427069714102\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7994827684607299\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.4192927771194878\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5823110824392093\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5713492613933141\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"240.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.14303342714264156\" x1=\"120.0\" y1=\"48.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9133281025483857\" x1=\"120.0\" y1=\"80.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8506673010710251\" x1=\"120.0\" y1=\"112.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.31829780804611396\" x1=\"120.0\" y1=\"144.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6558060863366412\" x1=\"120.0\" y1=\"176.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.834274824747964\" x1=\"120.0\" y1=\"208.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5167274081473123\" x1=\"120.0\" y1=\"240.0\" x2=\"180.0\" y2=\"272.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.152488172968942\" x1=\"180.0\" y1=\"16.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9624299035240228\" x1=\"180.0\" y1=\"48.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.09187570957046148\" x1=\"180.0\" y1=\"80.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.0771852413642121\" x1=\"180.0\" y1=\"112.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.0716250927159499\" x1=\"180.0\" y1=\"144.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.11621459023513796\" x1=\"180.0\" y1=\"176.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7601462822704179\" x1=\"180.0\" y1=\"208.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6961873514562448\" x1=\"180.0\" y1=\"240.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.816092526158262\" x1=\"180.0\" y1=\"272.0\" x2=\"240.0\" y2=\"96.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.09739128257225732\" x1=\"180.0\" y1=\"16.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8027596860960544\" x1=\"180.0\" y1=\"48.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8150496364871668\" x1=\"180.0\" y1=\"80.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7830892391278402\" x1=\"180.0\" y1=\"112.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.25724182567392373\" x1=\"180.0\" y1=\"144.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.014699060676721103\" x1=\"180.0\" y1=\"176.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.11676776206175044\" x1=\"180.0\" y1=\"208.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2144911531658912\" x1=\"180.0\" y1=\"240.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9021454081088763\" x1=\"180.0\" y1=\"272.0\" x2=\"240.0\" y2=\"128.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9146686729712281\" x1=\"180.0\" y1=\"16.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.28112482249450704\" x1=\"180.0\" y1=\"48.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.36469616520787\" x1=\"180.0\" y1=\"80.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2818250318701233\" x1=\"180.0\" y1=\"112.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.46218900686183545\" x1=\"180.0\" y1=\"144.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.17294156134347535\" x1=\"180.0\" y1=\"176.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.06880823380036925\" x1=\"180.0\" y1=\"208.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8116034463218894\" x1=\"180.0\" y1=\"240.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.10560546954944978\" x1=\"180.0\" y1=\"272.0\" x2=\"240.0\" y2=\"160.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.1590798053109013\" x1=\"180.0\" y1=\"16.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7444495097022475\" x1=\"180.0\" y1=\"48.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3081430002775151\" x1=\"180.0\" y1=\"80.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9165423721187056\" x1=\"180.0\" y1=\"112.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5586902597810073\" x1=\"180.0\" y1=\"144.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.502640710188429\" x1=\"180.0\" y1=\"176.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9044274935177774\" x1=\"180.0\" y1=\"208.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.25974325212534605\" x1=\"180.0\" y1=\"240.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.050974716708485635\" x1=\"180.0\" y1=\"272.0\" x2=\"240.0\" y2=\"192.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.2102879167708326\" x1=\"180.0\" y1=\"16.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8132277063990861\" x1=\"180.0\" y1=\"48.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.4382532844612787\" x1=\"180.0\" y1=\"80.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6353127250015457\" x1=\"180.0\" y1=\"112.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.39750726362890243\" x1=\"180.0\" y1=\"144.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.49387288342948144\" x1=\"180.0\" y1=\"176.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.04238906078302415\" x1=\"180.0\" y1=\"208.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5575395384321283\" x1=\"180.0\" y1=\"240.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8130719560681484\" x1=\"180.0\" y1=\"272.0\" x2=\"240.0\" y2=\"224.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.42827732886907893\" x1=\"240.0\" y1=\"64.0\" x2=\"300.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.7524857654225132\" x1=\"240.0\" y1=\"96.0\" x2=\"300.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.18168212289002347\" x1=\"240.0\" y1=\"128.0\" x2=\"300.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9955630154716718\" x1=\"240.0\" y1=\"160.0\" x2=\"300.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3998719114633663\" x1=\"240.0\" y1=\"192.0\" x2=\"300.0\" y2=\"112.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.45004702309014805\" x1=\"240.0\" y1=\"224.0\" x2=\"300.0\" y2=\"112.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.6529493109710414\" x1=\"240.0\" y1=\"64.0\" x2=\"300.0\" y2=\"144.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.12789184864898545\" x1=\"240.0\" y1=\"96.0\" x2=\"300.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.5235585819189006\" x1=\"240.0\" y1=\"128.0\" x2=\"300.0\" y2=\"144.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8737069450849985\" x1=\"240.0\" y1=\"160.0\" x2=\"300.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3783451552205168\" x1=\"240.0\" y1=\"192.0\" x2=\"300.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.06769901684772477\" x1=\"240.0\" y1=\"224.0\" x2=\"300.0\" y2=\"144.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.8823952650010857\" x1=\"240.0\" y1=\"64.0\" x2=\"300.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.3527197276465686\" x1=\"240.0\" y1=\"96.0\" x2=\"300.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.4435995070227192\" x1=\"240.0\" y1=\"128.0\" x2=\"300.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.005603604465463817\" x1=\"240.0\" y1=\"160.0\" x2=\"300.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.10640178893187081\" x1=\"240.0\" y1=\"192.0\" x2=\"300.0\" y2=\"176.0\" stroke=\"lawngreen\" stroke-width=\"1.3333333333333333\"></line><line stroke-opacity=\"0.9625578090711674\" x1=\"240.0\" y1=\"224.0\" x2=\"300.0\" y2=\"176.0\" stroke=\"palevioletred\" stroke-width=\"1.3333333333333333\"></line><circle cx=\"60.0\" cy=\"80.0\" r=\"12.0\" stroke=\"black\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"60.0\" cy=\"112.0\" r=\"12.0\" stroke=\"brown\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"60.0\" cy=\"144.0\" r=\"12.0\" stroke=\"brown\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"60.0\" cy=\"176.0\" r=\"12.0\" stroke=\"brown\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"60.0\" cy=\"208.0\" r=\"12.0\" stroke=\"brown\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"48.0\" r=\"12.0\" stroke=\"black\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"80.0\" r=\"12.0\" stroke=\"blue\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"112.0\" r=\"12.0\" stroke=\"blue\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"144.0\" r=\"12.0\" stroke=\"blue\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"176.0\" r=\"12.0\" stroke=\"blue\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"208.0\" r=\"12.0\" stroke=\"blue\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"120.0\" cy=\"240.0\" r=\"12.0\" stroke=\"blue\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"16.0\" r=\"12.0\" stroke=\"black\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"48.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"80.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"112.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"144.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"176.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"208.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"240.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"180.0\" cy=\"272.0\" r=\"12.0\" stroke=\"orange\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"240.0\" cy=\"64.0\" r=\"12.0\" stroke=\"black\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"240.0\" cy=\"96.0\" r=\"12.0\" stroke=\"pink\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"240.0\" cy=\"128.0\" r=\"12.0\" stroke=\"pink\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"240.0\" cy=\"160.0\" r=\"12.0\" stroke=\"pink\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"240.0\" cy=\"192.0\" r=\"12.0\" stroke=\"pink\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"240.0\" cy=\"224.0\" r=\"12.0\" stroke=\"pink\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"300.0\" cy=\"112.0\" r=\"12.0\" stroke=\"yellow\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"300.0\" cy=\"144.0\" r=\"12.0\" stroke=\"yellow\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle><circle cx=\"300.0\" cy=\"176.0\" r=\"12.0\" stroke=\"yellow\" stroke-width=\"2.6666666666666665\" fill=\"white\"></circle></svg>"/utf8>>
).