From 2bab4550898eeda4c5742238b6fb4f6e5de585da Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Sat, 25 Jan 2025 09:49:01 +0100 Subject: [PATCH] Use slavelog cache in notebooks (only pllld_count) --- examples/Manifest.toml | 34 +- examples/Project.toml | 4 + examples/pllld_count.jl | 203 +- .../reset_failed_though_reconfig_done.csv | 2000 ----------------- 4 files changed, 115 insertions(+), 2126 deletions(-) delete mode 100644 examples/reset_failed_though_reconfig_done.csv diff --git a/examples/Manifest.toml b/examples/Manifest.toml index bc6c6e0..e6458d9 100644 --- a/examples/Manifest.toml +++ b/examples/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.2" +julia_version = "1.11.3" manifest_format = "2.0" -project_hash = "9bfd3227044b739391f5fee603ddc4de538f1c94" +project_hash = "a5287f1b860b464c05770978a0adc638b6272c1f" [[deps.ANSIColoredPrinters]] git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" @@ -347,9 +347,9 @@ version = "6.1.2+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" +git-tree-sha1 = "7de7c78d681078f027389e067864a8d53bd7c3c9" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.8.0" +version = "1.8.1" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -543,9 +543,9 @@ version = "8.5.0+0" [[deps.HypergeometricFunctions]] deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "b1c2585431c382e3fe5805874bda6aea90a95de9" +git-tree-sha1 = "2bd56245074fab4015b9174f24ceba8293209053" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.25" +version = "0.3.27" [[deps.Hyperscript]] deps = ["Test"] @@ -626,9 +626,9 @@ version = "1.4.2" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" +git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.1+0" +version = "2025.0.4+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -710,6 +710,12 @@ git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" +[[deps.JLD2]] +deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Requires", "TranscodingStreams"] +git-tree-sha1 = "91d501cb908df6f134352ad73cde5efc50138279" +uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" +version = "0.5.11" + [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" @@ -893,9 +899,9 @@ version = "0.1.4" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" +git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.2.0+0" +version = "2025.0.1+1" [[deps.MacroTools]] git-tree-sha1 = "72aebe0b5051e5143a079a4685a46da330a40472" @@ -983,9 +989,9 @@ version = "2023.12.12" [[deps.NaNMath]] deps = ["OpenLibm_jll"] -git-tree-sha1 = "030ea22804ef91648f29b7ad3fc15fa49d0e6e71" +git-tree-sha1 = "fe891aea7ccd23897520db7f16931212454e277e" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.3" +version = "1.1.1" [[deps.Netpbm]] deps = ["FileIO", "ImageCore", "ImageMetadata"] @@ -1080,10 +1086,10 @@ uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" version = "0.4.3" [[deps.PSBoardDataBase]] -deps = ["AutoHashEquals", "CSV", "DBInterface", "DataFrames", "Dates", "Documenter", "Downloads", "Printf", "SQLite", "StaticArrays", "Tables"] +deps = ["AutoHashEquals", "CSV", "DBInterface", "DataFrames", "Dates", "Documenter", "Downloads", "JLD2", "Printf", "SQLite", "StaticArrays", "Tables"] path = ".." uuid = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5" -version = "0.4.0" +version = "0.5.1" weakdeps = ["InteractiveUtils"] [deps.PSBoardDataBase.extensions] diff --git a/examples/Project.toml b/examples/Project.toml index 034ccf5..cbb2aac 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -5,6 +5,7 @@ DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" FHist = "68837c9b-b678-4cd5-9925-8a54edc8f695" +JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" PSBoardDataBase = "779f6a9c-59fa-41f1-8ed1-e9a91eccb2f5" PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" @@ -13,3 +14,6 @@ SQLite = "0aa819cd-b072-5ff4-a722-6bc24af294d9" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[compat] +FHist = "0.11" diff --git a/examples/pllld_count.jl b/examples/pllld_count.jl index 09ec6ab..0fb0811 100644 --- a/examples/pllld_count.jl +++ b/examples/pllld_count.jl @@ -11,6 +11,7 @@ begin using PSBoardDataBase using SQLite + using JLD2 using DataFrames using CSV using CairoMakie @@ -40,6 +41,9 @@ db = SQLite.DB("../psboard_qaqc.db") # ╔═╡ df5087be-18de-4714-b6d8-4ab54271b1fb SQLite.tables(db) +# ╔═╡ 566d3472-bd2d-489d-8736-857cb7ccaa93 +jld2_slavelogs = jldopen("../slavelog.jld2") + # ╔═╡ 56d8896a-40e3-46e3-aa28-82f89476743b qaqc_runs = DBInterface.execute(db, "select * from qaqc_runs") |> DataFrame @@ -71,7 +75,11 @@ map(eachrow(qaqc_extra_run_campaign_6)) do row @info "file $(logfile) not found" return missing end - slave_result = PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile) + slave_result = if haskey(jld2_slavelogs, logfilename) + jld2_slavelogs[logfilename] + else + PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile) + end map(slave_result.asdtp) do asdtp_result asdtp_result.pllld_fail_counter end @@ -90,8 +98,11 @@ df_pllld_counts_camp6 = combine( @warn "logfile $(logfile) not found" return [] end - slave_result = + slave_result = if haskey(jld2_slavelogs, logfilename) + jld2_slavelogs[logfilename] + else PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile) + end return map(slave_result.asdtp) do asdtp_result ( psboard_id = sdf.psboard_id[1], @@ -184,115 +195,66 @@ combine( ) # ╔═╡ a0baf37c-8b05-49c1-a6a4-027f3404f8b4 -df_reset_failed_though_reconfig_done = transform( - qaqc_extra_run_results, - [:psboard_id, :runid] => - ByRow( - (psboard_id, runid) -> begin - broken_list = @NamedTuple{psbid::Int64, runid::Int64}[ - (psbid = 1050, runid = 385), - (psbid = 1113, runid = 392), - (psbid = 1121, runid = 392), - (psbid = 131, runid = 38), - (psbid = 133, runid = 38), - (psbid = 136, runid = 38), - (psbid = 137, runid = 38), - (psbid = 1545, runid = 474), - (psbid = 16959, runid = 48), - (psbid = 16959, runid = 59), - (psbid = 198, runid = 251), - (psbid = 202, runid = 45), - (psbid = 203, runid = 45), - (psbid = 205, runid = 45), - (psbid = 206, runid = 45), - (psbid = 206, runid = 57), - (psbid = 206, runid = 59), - (psbid = 208, runid = 45), - (psbid = 210, runid = 45), - (psbid = 214, runid = 45), - (psbid = 215, runid = 48), - (psbid = 221, runid = 55), - (psbid = 223, runid = 48), - (psbid = 224, runid = 48), - (psbid = 229, runid = 48), - (psbid = 231, runid = 48), - (psbid = 234, runid = 48), - (psbid = 235, runid = 48), - (psbid = 237, runid = 45), - (psbid = 238, runid = 45), - (psbid = 239, runid = 45), - (psbid = 263, runid = 69), - (psbid = 329, runid = 69), - (psbid = 339, runid = 69), - (psbid = 42, runid = 178), - (psbid = 488791279, runid = 63), - (psbid = 48879, runid = 47), - (psbid = 723, runid = 436), - ] - if (; psbid = psboard_id, runid) in broken_list - @error "broken file psbid: $(psboard_id), runid: $(runid)" - return (; - psboard_id, - runid, - reset_failed_though_reconfig_done = missing, - ) - end +@time df_reset_failed_though_reconfig_done = let + broken_list = filter(:is_slavelog_valid => !=(1), qaqc_extra_run_results) + transform( + qaqc_extra_run_results, + [:psboard_id, :runid] => + ByRow( + (psboard_id, runid) -> begin + if psboard_id in broken_list.psboard_id && runid in broken_list.runid + return (; + psboard_id, + runid, + reset_failed_though_reconfig_done = missing, + ) + end - logfilename = "$(psboard_id)_$(runid)_longrun.txt" - logfile = joinpath("../test/input/slavelogs/main/", logfilename) - !ispath(logfile) && begin - @warn "logfile $(logfile) not found" + if runid == 99 + @info "skipping runid 99 since it is not exactly 100 run" + return ( + psboard_id = psboard_id, + runid = runid, + reset_failed_though_reconfig_done = missing, + ) + end + + logfilename = "$(psboard_id)_$(runid)_longrun.txt" + slave_result = if haskey(jld2_slavelogs, logfilename) + jld2_slavelogs[logfilename] + else + logfile = joinpath("../test/input/slavelogs/main/", logfilename) + PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile) + end return ( psboard_id = psboard_id, runid = runid, - reset_failed_though_reconfig_done = missing, + reset_failed_though_reconfig_done = count( + slave_result.asdtp, + ) do asdtp_result + asdtp_result.reconfig_done_2 != asdtp_result.reconfig_done + end, ) - end - if runid == 99 - @info "skipping runid 99 since it is not exactly 100 run" - return ( - psboard_id = psboard_id, - runid = runid, - reset_failed_though_reconfig_done = missing, - ) - end - if psboard_id == 1545 && runid == 474 - @info "skipping psbid 1545 runid 474 since it is broken" - return ( - psboard_id = psboard_id, - runid = runid, - reset_failed_though_reconfig_done = missing, - ) - end - slave_result = try - PSBoardDataBase.SlaveLogParser.parse_slavelog_file(logfile) - catch e - @error "Failed to parse slavelog file: $(logfile)" - throw(e) - end - return ( - psboard_id = psboard_id, - runid = runid, - reset_failed_though_reconfig_done = count( - slave_result.asdtp, - ) do asdtp_result - asdtp_result.reconfig_done_2 != asdtp_result.reconfig_done - end, - ) - end, - ) => [:psboard_id, :runid, :reset_failed_though_reconfig_done], -) + end, + ) => [:psboard_id, :runid, :reset_failed_though_reconfig_done], + ) +end # ╔═╡ 20633b30-a703-47bc-92a6-8743abbd375c -sort(dropmissing(df_reset_failed_though_reconfig_done, :reset_failed_though_reconfig_done), :reset_failed_though_reconfig_done, rev = true) +sort( + dropmissing(df_reset_failed_though_reconfig_done, :reset_failed_though_reconfig_done), + :reset_failed_though_reconfig_done, + rev = true, +) # ╔═╡ 9cf8e7cb-a1f6-4c5b-8c3b-3872d2020e57 -result = -PSBoardDataBase.SlaveLogParser.parse_slavelog_file("../test/input/slavelogs/main/1070_310_longrun.txt") +result = PSBoardDataBase.SlaveLogParser.parse_slavelog_file( + "../test/input/slavelogs/main/1070_310_longrun.txt", +) # ╔═╡ 9b055b29-cf54-457d-8776-39430554ef9f findall(result.asdtp) do result - result.reconfig_done != result.reconfig_done_2 + result.reconfig_done != result.reconfig_done_2 end # ╔═╡ d5d479b5-4d55-4a55-aa5f-893141981838 @@ -309,7 +271,13 @@ let end # ╔═╡ dfeb3900-539f-4d8d-8103-edb67cf4e890 -CSV.write("reset_failed_though_reconfig_done.csv", df_reset_failed_though_reconfig_done[:, [:psboard_id, :runid, :reset_failed_though_reconfig_done]]) +# CSV.write( +# "reset_failed_though_reconfig_done.csv", +# df_reset_failed_though_reconfig_done[ +# :, +# [:psboard_id, :runid, :reset_failed_though_reconfig_done], +# ], +# ) # ╔═╡ 332b7481-f6dc-4027-a5c5-cf58d5b6acd3 md""" @@ -325,12 +293,17 @@ asdtp_result_total_fail_vs_ppasic = let asdtp_result_total_vs_ppasic = zeros(Int64, 8) for row in eachrow(df) - slave_result = PSBoardDataBase.SlaveLogParser.parse_slavelog_file( - joinpath( - "../test/input/slavelogs/main/", - "$(row.psboard_id)_$(row.runid)_longrun.txt", - ), - ) + slave_result = + if haskey(jld2_slavelogs, "$(row.psboard_id)_$(row.runid)_longrun.txt") + jld2_slavelogs["$(row.psboard_id)_$(row.runid)_longrun.txt"] + else + PSBoardDataBase.SlaveLogParser.parse_slavelog_file( + joinpath( + "../test/input/slavelogs/main/", + "$(row.psboard_id)_$(row.runid)_longrun.txt", + ), + ) + end asdtp_results = slave_result.asdtp @assert length(asdtp_results) == 100 # @info "" first(asdtp_results) @@ -383,12 +356,17 @@ asdtp_result_total_pp7_vs_ch = let asdtp_result_total_pp7_vs_ch = zeros(Int64, 32) for row in eachrow(df) - slave_result = PSBoardDataBase.SlaveLogParser.parse_slavelog_file( - joinpath( - "../test/input/slavelogs/main/", - "$(row.psboard_id)_$(row.runid)_longrun.txt", - ), - ) + slave_result = + if haskey(jld2_slavelogs, "$(row.psboard_id)_$(row.runid)_longrun.txt") + jld2_slavelogs["$(row.psboard_id)_$(row.runid)_longrun.txt"] + else + PSBoardDataBase.SlaveLogParser.parse_slavelog_file( + joinpath( + "../test/input/slavelogs/main/", + "$(row.psboard_id)_$(row.runid)_longrun.txt", + ), + ) + end asdtp_results = slave_result.asdtp @assert length(asdtp_results) == 100 # @info "" first(asdtp_results) @@ -434,6 +412,7 @@ barplot( # ╟─26954da1-0820-490d-aa3e-79fd3603d28a # ╠═a36886af-ff32-4f4f-a20f-f83bc333b8fd # ╠═df5087be-18de-4714-b6d8-4ab54271b1fb +# ╠═566d3472-bd2d-489d-8736-857cb7ccaa93 # ╠═56d8896a-40e3-46e3-aa28-82f89476743b # ╠═08032250-5893-445c-8662-459e5636ba81 # ╠═013948ff-ccde-4222-862b-7ecda62fd7f1 diff --git a/examples/reset_failed_though_reconfig_done.csv b/examples/reset_failed_though_reconfig_done.csv deleted file mode 100644 index 8b3b76e..0000000 --- a/examples/reset_failed_though_reconfig_done.csv +++ /dev/null @@ -1,2000 +0,0 @@ -psboard_id,runid,reset_failed_though_reconfig_done -49,20, -43,20, -51,20, -57,20, -59,20, -65,20, -67,20, -73,20, -75,20, -50,20, -44,20, -44,90,0 -52,20, -58,20, -60,20, -66,20, -68,20, -74,20, -74,90,0 -76,20, -41,27,0 -45,27,0 -47,27,0 -53,27,0 -55,27,0 -61,27,0 -63,27,0 -69,27,0 -71,27,0 -42,27,0 -46,27,0 -48,27,0 -54,27,0 -56,27,0 -62,27,0 -62,90,0 -64,27,0 -70,27,0 -72,27,0 -36,28,0 -101,28,0 -80,28,0 -116,28,0 -104,28,0 -108,28,0 -107,28,0 -112,28,0 -114,28,0 -78,28,0 -77,28,0 -79,28,0 -105,28,0 -109,28,0 -110,28,0 -106,28,0 -103,28,0 -103,90,0 -111,28,0 -115,31,0 -118,31,0 -180,31,0 -182,31,0 -183,31,0 -187,31,0 -189,31,0 -193,31,0 -190,31,0 -117,31,0 -119,31,0 -181,31,0 -185,31,0 -184,31,0 -188,31,0 -186,31,0 -192,31,0 -191,31,0 -170,34,0 -194,34,0 -113,34,0 -198,34,0 -160,34,100 -160,90,0 -168,34,0 -167,34,0 -166,34,0 -165,34,0 -169,34,0 -195,34,0 -196,34,0 -196,90,0 -197,34,0 -199,34,0 -162,34,0 -164,34,0 -164,90,0 -161,34,0 -163,34,0 -173,36,0 -172,36,0 -171,36,0 -179,36,0 -176,36,0 -120,36,0 -123,36,0 -126,36,0 -127,36,0 -127,90,0 -174,36,0 -175,36,0 -178,36,0 -121,36,0 -177,36,0 -124,36,0 -122,36,0 -128,36,0 -125,36,0 -135,40,0 -130,40,0 -129,40,0 -158,40,0 -139,40,0 -156,40,0 -134,40,0 -157,40,0 -153,40,0 -136,40,0 -137,40,0 -137,90,0 -138,40,0 -133,40,0 -159,40,0 -131,40,0 -155,40,0 -154,40,0 -152,42,0 -148,42,0 -150,42,0 -145,42,0 -147,42,0 -140,42,0 -143,42,0 -219,42,0 -218,42,0 -151,42,0 -144,42,0 -149,42,21 -149,90,0 -142,42,0 -146,42,0 -200,42,0 -141,42,0 -216,42,0 -217,42,0 -214,46,0 -213,46,0 -212,46,0 -207,46,0 -208,46,0 -205,46,0 -203,46,0 -201,46,0 -238,46,0 -211,46,0 -210,46,0 -209,46,0 -206,46,0 -204,46,0 -204,90,0 -202,46,0 -239,46,0 -237,46,0 -235,49,0 -231,49,0 -232,49,0 -228,49,0 -230,49,0 -225,49,0 -226,49,0 -222,49,0 -221,49,0 -215,49,0 -234,49,0 -233,49,0 -227,49,0 -229,49,0 -224,49,0 -223,49,0 -220,49,0 -132,90,0 -324,67,0 -321,67,0 -320,67,0 -325,67,0 -334,67,0 -332,67,0 -327,67,0 -323,67,0 -322,67,0 -322,90,0 -326,67,0 -330,67,0 -328,67,0 -335,67,0 -335,90,0 -333,67,0 -336,70,0 -331,70,0 -338,70,0 -260,70,0 -262,70,0 -264,70,0 -267,70,0 -268,70,0 -269,70,0 -337,70,0 -329,70,0 -339,70,0 -261,70,0 -263,70,0 -265,70,0 -266,70,0 -270,70,0 -270,90,0 -271,70,0 -273,73,0 -272,73,0 -277,73,0 -278,73,0 -318,73,0 -316,73,0 -315,73,0 -314,73,0 -311,73,0 -274,73,0 -275,73,0 -276,73,0 -279,73,0 -317,73,0 -319,73,0 -310,73,0 -313,73,0 -312,73,0 -304,76,0 -352,76,0 -357,76,0 -305,76,0 -305,90,0 -300,76,0 -302,76,0 -356,76,0 -356,90,0 -308,76,0 -307,76,0 -301,76,0 -354,76,0 -355,76,0 -306,76,0 -303,76,0 -358,76,0 -359,76,0 -309,76,0 -353,76,0 -351,80,0 -349,80,0 -346,80,0 -342,80,0 -348,80,0 -343,80,0 -340,80,0 -380,80,0 -382,80,0 -350,80,0 -347,80,0 -345,80,0 -341,80,0 -344,80,0 -399,80,0 -381,80,0 -398,80,0 -397,80,0 -293,82,0 -296,82,0 -383,82,0 -388,82,0 -393,82,0 -386,82,0 -390,82,0 -394,82,0 -392,82,0 -298,82,0 -297,82,0 -385,82,0 -389,82,0 -391,82,0 -387,82,0 -384,82,0 -396,82,0 -395,82,0 -280,90,0 -286,84,0 -240,84,0 -241,84,0 -282,84,0 -289,84,0 -287,84,0 -294,84,0 -292,84,0 -283,84,0 -281,84,0 -242,84,0 -285,84,0 -284,84,0 -288,84,0 -290,84,0 -295,84,0 -291,84,100 -256,86,0 -243,86,0 -255,86,87 -248,86,0 -246,86,0 -245,86,0 -250,86,0 -254,86,0 -257,86,0 -258,86,0 -247,86,0 -253,86,0 -249,86,0 -244,86,0 -251,86,0 -259,86,0 -252,86,0 -360,86,0 -365,88,0 -371,88,0 -375,88,0 -377,88,0 -378,88,100 -364,88,0 -362,88,0 -372,88,0 -374,88,0 -367,88,0 -376,88,0 -373,88,0 -363,88,0 -366,88,0 -368,88,0 -361,88,0 -370,88,0 -369,88,0 -127,90,0 -204,90,0 -44,90,0 -137,90,0 -356,90,0 -335,90,0 -160,90,0 -149,90,0 -74,90,0 -196,90,0 -270,90,0 -305,90,0 -103,90,0 -62,90,0 -280,90,0 -322,90,0 -132,90,0 -164,90,0 -127,93,0 -204,93,0 -44,93,0 -137,93,0 -356,93,0 -335,93,0 -160,93,0 -149,93,0 -74,93,0 -196,93,0 -270,93,0 -305,93,0 -103,93,0 -62,93,0 -280,93,0 -322,93,0 -132,93,0 -164,93,0 -393,95,0 -378,95,0 -324,95,0 -316,95,0 -292,95,0 -291,95,0 -255,95,70 -233,95,0 -226,95,0 -210,95,0 -203,95,0 -198,95,0 -184,95,0 -183,95,0 -165,95,0 -135,95,0 -64,95,0 -379,99, -401,99, -403,99, -405,99, -407,99, -409,99, -411,99, -413,99, -415,99, -400,99, -402,99, -404,99, -406,99, -408,99, -410,99, -412,99, -414,99, -416,99, -417,102,0 -419,102,0 -421,102,0 -423,102,0 -425,102,0 -427,102,0 -429,102,0 -431,102,0 -433,102,0 -418,102,0 -420,102,0 -422,102,0 -424,102,0 -426,102,0 -428,102,0 -430,102,0 -432,102,0 -434,102,0 -435,104,0 -437,104,0 -439,104,0 -441,104,0 -443,104,0 -445,104,0 -447,104,0 -449,104,0 -451,104,0 -436,104,0 -438,104,0 -440,104,0 -442,104,0 -444,104,0 -446,104,0 -448,104,0 -450,104,0 -452,104,0 -453,106,0 -455,106,0 -457,106,0 -459,106,0 -461,106,0 -463,106,0 -465,106,0 -467,106,0 -469,106,0 -454,106,0 -456,106,0 -458,106,0 -460,106,0 -462,106,0 -464,106,0 -466,106,0 -468,106,0 -470,106,0 -471,108,0 -473,108,0 -475,108,0 -477,108,0 -479,108,0 -481,108,0 -483,108,0 -485,108,0 -487,108,0 -472,108,0 -474,108,0 -476,108,0 -478,108,0 -480,108,0 -482,108,0 -484,108,0 -486,108,0 -488,108,0 -471,115,0 -473,115,0 -475,115,0 -477,115,0 -479,115,0 -481,115,0 -483,115,0 -485,115,0 -487,115,0 -472,115,0 -474,115,0 -476,115,0 -478,115,0 -480,115,0 -482,115,0 -484,115, -486,115,0 -488,115,0 -489,118,0 -491,118,0 -493,118,0 -495,118,0 -497,118,0 -499,118,0 -501,118,0 -503,118,0 -505,118,0 -490,118,0 -492,118,0 -494,118,0 -496,118,0 -498,118,0 -500,118,0 -502,118,0 -504,118,0 -506,118,0 -507,121,0 -509,121,0 -511,121,0 -513,121,0 -515,121,0 -517,121,0 -519,121,0 -521,121,0 -523,121,0 -508,121,0 -510,121,0 -512,121,0 -514,121,0 -516,121,0 -518,121,0 -520,121,0 -522,121,0 -524,121,0 -525,124,0 -527,124,0 -529,124,0 -531,124,0 -533,124,0 -535,124,0 -537,124,0 -539,124,0 -541,124,0 -526,124,0 -528,124,0 -530,124,0 -532,124,0 -534,124,0 -536,124,0 -538,124,0 -540,124,0 -542,124,0 -543,127,0 -545,127,0 -547,127,0 -548,127,0 -550,127,0 -552,127,0 -554,127,0 -556,127,0 -558,127,0 -544,127,0 -546,127,0 -48,127,0 -549,127,0 -551,127,0 -553,127,0 -555,127,0 -557,127,0 -559,127,0 -560,129,0 -562,129,0 -564,129,0 -566,129,0 -568,129,0 -570,129,0 -572,129,0 -574,129,0 -576,129,0 -561,129,0 -563,129,0 -565,129,0 -567,129,0 -569,129,0 -571,129,0 -573,129,0 -575,129,0 -577,129,0 -578,131,0 -580,131,0 -582,131,0 -584,131,0 -586,131,0 -588,131,0 -590,131,0 -592,131,0 -594,131,0 -579,131,0 -581,131,0 -583,131,0 -585,131,0 -587,131,0 -589,131,0 -591,131,0 -593,131,0 -595,131,0 -379,133,0 -562,133,0 -491,133,0 -545,133,0 -538,133,0 -401,133,0 -350,133,0 -460,133,0 -589,133,0 -454,133,0 -425,133,0 -580,133,0 -442,133,0 -462,133,0 -437,133,0 -472,133,0 -595,133,0 -579,133,0 -525,169,0 -249,169,0 -518,169,0 -64,169,0 -61,169,0 -548,169,0 -78,169,0 -198,169,0 -42,169,0 -280,169,0 -451,169,0 -538,169,0 -53,169,0 -79,169,0 -410,169,0 -301,169,0 -446,169,0 -127,169,0 -525,174,0 -249,174,0 -518,174,0 -64,174,0 -61,174,0 -548,174,0 -78,174,0 -198,174,0 -42,174,0 -280,174, -451,174,0 -538,174,0 -53,174,0 -79,174,0 -410,174,0 -301,174,0 -446,174,0 -127,174,0 -525,177,0 -249,177,0 -518,177,0 -64,177,0 -61,177,0 -548,177,0 -78,177,0 -198,177,0 -42,177,0 -280,177,0 -451,177,0 -538,177,0 -53,177,0 -79,177,0 -410,177,0 -301,177,0 -446,177,0 -127,177,0 -525,180,0 -249,180,0 -518,180,0 -64,180,0 -61,180,0 -548,180,0 -78,180,0 -198,180,0 -42,180,0 -280,180,0 -451,180,0 -538,180,0 -53,180,0 -79,180,0 -410,180,0 -301,180,0 -446,180,0 -127,180,0 -525,187,0 -249,187,0 -518,187,0 -64,187,0 -61,187,0 -548,187,0 -78,187,0 -198,187,0 -42,187,0 -280,187, -451,187,0 -538,187,0 -53,187,0 -79,187,0 -410,187,0 -301,187,0 -446,187,0 -127,187,0 -596,189,0 -598,189,0 -615,189,0 -602,189,0 -604,189,0 -606,189,0 -608,189,0 -610,189,0 -613,189,0 -597,189,0 -599,189,0 -601,189,0 -603,189,0 -605,189,0 -607,189,0 -609,189,0 -612,189,0 -614,189,0 -616,191,0 -618,191,0 -620,191,0 -622,191,0 -624,191,0 -626,191,0 -628,191,0 -630,191,0 -632,191,0 -617,191,0 -619,191,0 -621,191,0 -623,191,0 -625,191,4 -627,191,0 -629,191,0 -631,191,0 -633,191,100 -634,194,0 -636,194,0 -638,194,0 -640,194,0 -642,194,0 -644,194,0 -646,194,0 -648,194,0 -650,194,0 -635,194,0 -637,194,0 -639,194,0 -641,194,0 -643,194,0 -645,194,0 -647,194,0 -649,194,0 -651,194,0 -652,196,0 -654,196,0 -656,196,0 -658,196,0 -660,196,0 -662,196,0 -664,196,0 -666,196,0 -668,196,0 -653,196,0 -655,196,0 -657,196,0 -659,196,0 -661,196,0 -663,196,0 -665,196,0 -667,196,0 -669,196,0 -670,198,0 -672,198,0 -674,198,0 -676,198,21 -678,198,0 -680,198,0 -682,198,0 -684,198,0 -686,198,0 -671,198,0 -673,198,0 -675,198,0 -677,198,0 -679,198,0 -681,198,0 -683,198,0 -685,198,0 -687,198,0 -688,201,0 -690,201,0 -692,201,0 -694,201,0 -696,201,0 -698,201,0 -700,201,0 -702,201,0 -704,201,0 -689,201,0 -691,201,0 -693,201,0 -695,201,0 -697,201,0 -699,201,0 -701,201,0 -703,201,0 -705,201,0 -706,203,0 -708,203,0 -710,203,0 -712,203,0 -714,203,0 -716,203,0 -718,203,0 -720,203,0 -722,203,0 -707,203,0 -709,203,0 -711,203,0 -713,203,0 -715,203,0 -717,203,0 -719,203,0 -721,203,0 -723,203,0 -724,207,0 -726,207,0 -728,207,0 -730,207,0 -732,207,0 -734,207,0 -736,207,0 -738,207,0 -740,207,0 -725,207,0 -727,207,0 -729,207,0 -731,207,0 -733,207,0 -735,207,0 -737,207,0 -739,207,0 -741,207,0 -742,209,0 -744,209,0 -746,209,0 -748,209,0 -750,209,0 -752,209,0 -754,209,0 -756,209,0 -758,209,0 -743,209,0 -745,209,0 -747,209,0 -749,209,0 -751,209,0 -753,209,0 -755,209,0 -757,209,100 -759,209,0 -760,212,0 -762,212,0 -764,212,0 -766,212,0 -768,212,0 -770,212,0 -772,212,0 -774,212,0 -776,212,0 -761,212,0 -763,212,0 -765,212,0 -767,212,0 -769,212,0 -771,212,0 -773,212,0 -775,212,0 -777,212,0 -778,215,0 -780,215,0 -782,215,0 -784,215,0 -786,215,0 -788,215,0 -790,215,0 -792,215,0 -794,215,0 -779,215,0 -781,215,0 -783,215,0 -785,215,0 -787,215,0 -789,215,0 -791,215,0 -793,215,0 -795,215,0 -796,218,0 -798,218,0 -801,218,0 -804,218,0 -806,218,0 -808,218,0 -810,218,0 -812,218,0 -815,218,0 -797,218,0 -799,218,0 -802,218,0 -805,218,0 -807,218,0 -809,218,0 -811,218,0 -813,218,0 -816,218,0 -817,220,0 -819,220,0 -821,220,0 -823,220,0 -825,220,0 -827,220,0 -829,220,0 -831,220,0 -833,220,0 -818,220,0 -820,220,0 -822,220,0 -824,220,0 -826,220,0 -828,220,0 -830,220,0 -832,220,0 -834,220,0 -835,223,0 -837,223,0 -840,223,0 -842,223,0 -844,223,0 -847,223,0 -849,223,0 -851,223,0 -853,223,0 -836,223,0 -838,223,0 -841,223,0 -843,223,0 -846,223,0 -848,223,0 -850,223,0 -852,223,0 -854,223,0 -855,225,0 -857,225,0 -859,225,0 -861,225,0 -865,225,0 -867,225,0 -869,225,0 -871,225,0 -873,225,0 -856,225,0 -858,225,0 -860,225,0 -862,225,0 -866,225,0 -868,225,0 -870,225,0 -872,225,0 -874,225,0 -875,227,0 -877,227,0 -880,227,0 -883,227,0 -885,227,0 -887,227,0 -889,227,0 -891,227,0 -893,227,0 -876,227,0 -878,227,0 -881,227,0 -884,227,0 -886,227,0 -888,227,0 -890,227,0 -892,227,0 -894,227,0 -895,229,0 -897,229,0 -899,229,0 -901,229,0 -903,229,0 -905,229,0 -908,229,0 -910,229,0 -912,229,0 -896,229,0 -898,229,0 -900,229,0 -902,229,0 -904,229,0 -906,229,0 -909,229,0 -911,229,0 -913,229,0 -914,231,0 -916,231,0 -918,231,0 -920,231,0 -922,231,0 -925,231,0 -927,231,0 -929,231,0 -931,231,0 -915,231,0 -917,231,0 -919,231,0 -921,231,0 -923,231,100 -926,231,0 -928,231,0 -930,231,0 -932,231,0 -933,235,0 -935,235,0 -938,235,0 -940,235,0 -942,235,0 -944,235,0 -946,235,0 -948,235,0 -600,235,0 -934,235,0 -937,235,0 -939,235,0 -941,235,0 -943,235,0 -945,235,0 -947,235,0 -949,235,0 -882,235,0 -923,237,0 -790,237,0 -864,237,0 -936,237,0 -897,237,0 -630,237,0 -757,237,0 -680,237,0 -655,237,0 -766,237,0 -814,237,0 -839,237,0 -860,237,0 -802,237,0 -745,237,0 -799,237,0 -676,237,0 -633,237,0 -766,243,0 -249,243,0 -518,243,0 -64,243,0 -61,243,0 -548,243,0 -78,243,0 -198,243,0 -42,243,0 -814,243,0 -451,243,0 -538,243,0 -53,243,0 -79,243,0 -410,243,0 -301,243,0 -446,243,0 -127,243,0 -525,245,0 -627,245,0 -862,245,0 -64,245,0 -61,245,0 -548,245,0 -78,245,0 -198,245,0 -42,245,0 -872,245,0 -861,245,0 -226,245,0 -53,245,0 -79,245,0 -410,245,0 -301,245,0 -446,245,0 -127,245,0 -950,295,0 -952,295,0 -954,295,0 -956,295,0 -958,295,0 -960,295,0 -962,295,0 -964,295,0 -966,295,0 -951,295,0 -953,295,0 -955,295,0 -957,295,0 -959,295,0 -961,295,0 -963,295,0 -965,295,0 -967,295,0 -968,297,0 -970,297,1 -972,297,0 -974,297,0 -976,297,0 -978,297,0 -980,297,0 -982,297,0 -984,297,0 -969,297,0 -971,297,0 -973,297,0 -975,297,0 -977,297,0 -979,297,0 -981,297,0 -983,297,0 -985,297,0 -986,301,0 -988,301,0 -990,301,0 -992,301,0 -994,301,0 -996,301,0 -998,301,0 -1000,301,0 -1002,301,0 -987,301,0 -989,301,0 -991,301,0 -993,301,0 -995,301,0 -997,301,0 -999,301,0 -1001,301,0 -1003,301,0 -1004,303,0 -1006,303,0 -1008,303,0 -1010,303,0 -1012,303,0 -1014,303,0 -1016,303,0 -1020,303,0 -1005,303,0 -1007,303,0 -1009,303,0 -1011,303,0 -1013,303,0 -1015,303,0 -1017,303,0 -1019,303,0 -1021,303,0 -1022,306,0 -1024,306,0 -1026,306,0 -1028,306,0 -1030,306,0 -1032,306,0 -1034,306,0 -1036,306,0 -1038,306,0 -1023,306,0 -1025,306,0 -1027,306,0 -1029,306,0 -1031,306,0 -1033,306,0 -1035,306,0 -1037,306,0 -1039,306,0 -1040,308,0 -1042,308,0 -1044,308,0 -1046,308,0 -1048,308,0 -1050,308,0 -1052,308,0 -1054,308,0 -1056,308,0 -1041,308,0 -1043,308,0 -1045,308,0 -1047,308,0 -1049,308,0 -1051,308,0 -1053,308,0 -1055,308,0 -1057,308,0 -1058,310,0 -1060,310,0 -1062,310,0 -1064,310,0 -1066,310,0 -1068,310,0 -1070,310,1 -1072,310,0 -1074,310,0 -1059,310,0 -1061,310,0 -1063,310,0 -1065,310,0 -1067,310,0 -1069,310,0 -1071,310,0 -1073,310,0 -1075,310,0 -1076,312,0 -1078,312,0 -1080,312,0 -1082,312,0 -1084,312,0 -1086,312,0 -1088,312,0 -999999,312, -1092,312,0 -1077,312,0 -1079,312,0 -1081,312,0 -1083,312,0 -1085,312,0 -1087,312,0 -1089,312,0 -1091,312,0 -1093,312,0 -1094,314,0 -1096,314,0 -999999,314, -1100,314,0 -1102,314,0 -1104,314,0 -1106,314,0 -1108,314,0 -1110,314,0 -1095,314,0 -1097,314,0 -1099,314,0 -1101,314,0 -1103,314,0 -1105,314,0 -1107,314,0 -1109,314,0 -1111,314,0 -1112,316,0 -1114,316,0 -1116,316,0 -1118,316,0 -1120,316,0 -1122,316,0 -1124,316,0 -1126,316,0 -1128,316,0 -1113,316,0 -1115,316,0 -1117,316,0 -1119,316,0 -1121,316,0 -1123,316,0 -1125,316,0 -1127,316,0 -1129,316,0 -1130,318,0 -1132,318,0 -1134,318,0 -1136,318,0 -1138,318,0 -1140,318,0 -1142,318,0 -1144,318,0 -1146,318,0 -1131,318,0 -1133,318,0 -1135,318,0 -1137,318,0 -1139,318,0 -1141,318,7 -1143,318,0 -1145,318,0 -1147,318,0 -1141,320,0 -1134,320,0 -1143,320,0 -1142,320,0 -1135,320,0 -1121,320,0 -982,320,0 -1112,320,0 -1101,320,0 -1144,320, -1117,320,0 -1126,320,0 -1034,320,0 -1128,320,0 -1113,320,0 -1110,320,0 -1103,320,0 -1102,320,0 -1141,321,0 -1134,321,0 -1143,321,0 -1142,321,0 -1135,321,0 -1121,321,0 -982,321,0 -1112,321,0 -1101,321,0 -1144,321,0 -1117,321, -1126,321,0 -1034,321, -1128,321,0 -1113,321,0 -1110,321,0 -1103,321,0 -1102,321,0 -1093,322,0 -1082,322,0 -1050,322,0 -1053,322,0 -1040,322,15 -1044,322,0 -1030,322,0 -1031,322,0 -1015,322,0 -1083,322,0 -1081,322,0 -1126,322,0 -1048,322,0 -1036,322,0 -1039,322,0 -1016,322,0 -1022,322,0 -1014,322,0 -1093,324,0 -1082,324,0 -1050,324,0 -1053,324,0 -1040,324,0 -1044,324,0 -1030,324,0 -1031,324,0 -1015,324,0 -1083,324,0 -1081,324,0 -1126,324,0 -1048,324,0 -1036,324,0 -1039,324,0 -1016,324,0 -1022,324,0 -1014,324,0 -1102,326,0 -1144,326,0 -1134,326,0 -1128,326,0 -1112,326,0 -1103,326,0 -1135,326,0 -1063,326,0 -1121,326,0 -1141,326,0 -1074,326,0 -1143,326,0 -1142,326,0 -1101,326,0 -1113,326,0 -1110,326,0 -982,326,0 -1014,326,0 -1015,329,0 -958,329,0 -957,329,0 -1103,329,0 -1031,329,0 -978,329,0 -78,329,0 -862,329,0 -42,329,0 -967,329,0 -981,329,0 -990,329,0 -1102,329,0 -1112,329,0 -1082,329,0 -79,329,0 -676,329,0 -301,329,0 -1018,357,0 -1149,357,0 -1150,357,0 -1152,357,0 -1154,357,0 -1156,357,0 -1158,357,0 -1160,357,0 -1162,357,0 -1148,357,0 -1098,357,0 -1151,357,0 -1153,357,0 -1155,357,0 -1157,357,0 -1159,357,0 -1161,357,0 -1163,357,0 -1164,359,0 -1166,359,0 -1168,359,0 -1170,359,0 -1172,359,0 -1174,359,0 -1176,359,0 -1178,359,0 -1180,359,0 -1148,359,0 -1167,359,0 -1169,359,0 -1171,359,0 -1173,359,0 -1175,359,0 -1177,359,0 -1179,359,0 -1181,359,0 -1165,361,0 -1183,361,0 -1185,361,0 -1187,361,0 -1189,361,0 -1191,361,0 -1193,361,0 -1195,361,0 -1197,361,0 -1182,361,0 -1184,361,0 -1186,361,0 -1188,361,0 -1190,361,0 -1192,361,0 -1194,361,0 -1196,361,0 -1199,361,0 -1198,363,0 -1201,363,0 -1203,363,0 -1205,363,0 -1207,363,0 -1209,363,0 -1211,363,0 -1213,363,0 -1215,363,0 -1200,363,0 -1202,363,0 -1204,363,0 -1206,363,39 -1208,363,0 -1210,363,0 -1212,363,0 -1214,363,0 -1216,363,0 -1217,365,0 -1219,365,0 -1221,365,0 -1223,365,0 -1225,365,0 -1227,365,0 -1229,365,0 -1231,365,0 -1233,365,0 -1218,365,0 -1220,365,0 -1222,365,0 -1224,365,0 -1226,365,0 -1228,365,0 -1230,365,0 -1232,365,0 -1234,365,0 -1235,367,0 -1237,367,0 -1239,367,0 -1241,367,0 -1243,367,0 -1245,367,0 -1247,367,0 -1249,367,0 -1251,367,0 -1236,367,0 -1238,367,0 -1240,367,0 -1242,367,0 -1244,367,0 -1246,367,0 -1248,367,0 -1250,367,0 -1252,367,0 -1253,370,0 -1255,370,0 -1257,370,0 -1259,370,0 -1261,370,0 -1263,370,0 -1265,370,0 -1267,370,0 -1269,370,0 -1254,370,0 -1256,370,0 -1258,370,0 -1260,370,0 -1262,370,0 -1264,370,0 -1266,370,0 -1268,370,0 -1270,370,0 -1271,372,0 -1273,372,0 -1275,372,0 -1277,372,0 -1279,372,0 -1281,372,0 -1283,372,0 -1285,372,0 -1287,372,0 -1272,372,0 -1274,372,0 -1276,372,0 -1278,372,0 -1280,372,0 -1282,372,0 -1284,372,0 -1286,372,0 -1288,372,0 -1289,374,0 -1291,374,0 -1293,374,0 -1295,374,0 -1297,374,0 -1299,374,0 -1301,374,0 -1303,374,0 -1305,374,0 -1290,374,0 -1292,374,0 -1294,374,0 -1296,374,0 -1298,374,0 -1300,374,0 -1302,374,0 -1304,374,0 -1306,374,0 -1307,376,0 -1309,376,0 -1311,376,0 -1313,376,0 -1315,376,0 -1317,376,0 -1319,376,0 -1321,376,0 -1323,376,0 -1308,376,0 -1310,376,0 -1312,376,0 -1314,376,0 -1316,376,0 -1318,376,0 -1320,376,0 -1322,376,0 -1324,376,0 -1325,379,0 -1327,379,0 -1329,379,0 -1331,379,0 -1333,379,0 -1335,379,0 -1337,379,0 -1339,379,0 -1341,379,0 -1326,379,0 -1328,379,0 -1330,379,0 -1332,379,0 -1334,379,0 -1336,379,0 -1338,379,0 -1340,379,0 -1342,379,0 -1213,381,100 -1163,381,0 -1181,381,0 -1216,381,0 -1252,381,0 -1288,381,0 -1324,381,0 -1166,381,0 -1182,381,0 -1183,381,0 -1206,381,0 -1199,381,0 -1234,381,0 -1270,381,0 -1306,381,0 -1342,381,0 -1169,381,0 -1159,381,0 -1050,427,0 -1110,427,0 -1113,427,0 -1121,427,0 -1142,427,0 -1242,427,0 -525,427,0 -872,427,0 -973,427,0 -990,427,0 -992,427,0 -451,431,0 -624,431,0 -706,431,0 -127,431,0 -723,431,0 -650,431,0 -249,431,0 -612,431,0 -446,431,0 -518,431,0 -410,431,0 -703,431,0 -451,433,0 -624,433,0 -706,433,0 -127,433,0 -723,433,0 -650,433,0 -249,433,0 -612,433,0 -446,433,0 -518,433,0 -410,433,0 -703,433,0 -451,436,0 -624,436,0 -706,436,0 -127,436,0 -723,436, -650,436,0 -249,436,0 -612,436,0 -446,436,0 -518,436,0 -410,436,0 -703,436,0 -703,444,0 -1276,444,0 -226,444,0 -1040,444,0 -1015,444,0 -1031,444,0 -1082,444,0 -1215,444,0 -1206,444,0 -1030,444,0 -861,444,0 -1014,444,0 -1126,444,0 -1112,444,0 -1102,444,0 -1103,444,0 -1222,444,0 -1183,444,0 -1344,449,1 -1343,449,0 -1347,449,0 -1349,449,0 -1351,449,0 -1353,449,0 -1355,449,0 -1357,449,0 -1359,449,0 -1345,449,0 -1346,449,0 -1348,449,0 -1350,449,0 -1352,449,0 -1354,449,0 -1356,449,0 -1358,449,0 -1360,449,0 -1361,451,0 -1363,451,0 -1365,451,0 -1367,451,0 -1369,451,0 -1371,451,0 -1373,451,0 -1375,451,0 -1377,451,0 -1362,451,0 -1364,451,0 -1366,451,0 -1368,451,0 -1370,451,0 -1372,451,0 -1374,451,0 -1376,451,0 -1378,451,0 -1377,454,0 -1379,454,0 -1381,454,0 -1383,454,0 -1385,454,0 -1387,454,0 -1390,454,0 -1392,454,0 -1394,454,0 -1389,454,0 -1380,454,0 -1382,454,0 -1384,454,0 -1386,454,0 -1388,454,0 -1391,454,0 -1393,454,0 -1395,454,0 -1397,456,0 -1399,456,0 -1401,456,0 -1403,456,0 -1405,456,0 -1407,456,0 -1409,456,0 -1411,456,0 -1413,456,0 -1398,456,0 -1400,456,0 -1402,456,0 -1404,456,0 -1406,456,0 -1408,456,0 -1410,456,0 -1412,456,0 -1414,456,0 -1415,459,0 -1417,459,0 -1419,459,0 -1421,459,0 -1423,459,0 -1425,459,0 -1427,459,0 -1429,459,0 -1431,459,0 -1416,459,0 -1418,459,0 -1420,459,0 -1422,459,0 -1424,459,0 -1426,459,0 -1428,459,0 -1430,459,0 -1432,459,0 -1433,461,100 -1435,461,0 -1437,461,0 -1439,461,0 -1441,461,0 -1443,461,0 -1445,461,0 -1447,461,0 -1449,461,0 -1434,461,0 -1436,461,0 -1438,461,0 -1440,461,0 -1442,461,0 -1444,461,0 -1446,461,0 -1448,461,0 -1450,461,0 -1451,463,0 -1453,463,0 -1455,463,0 -1457,463,0 -1459,463,0 -1461,463,0 -1464,463,0 -1465,463,0 -1467,463,0 -1452,463,0 -1454,463,0 -1456,463,0 -1458,463,0 -1460,463,0 -1462,463,0 -1463,463,0 -1466,463,0 -1396,463,0 -1468,466,0 -1470,466,0 -1472,466,0 -1474,466,0 -1476,466,0 -1478,466,0 -1480,466,0 -1482,466,0 -1484,466,0 -1469,466,0 -1471,466,0 -1473,466,0 -1475,466,0 -1477,466,0 -1479,466,0 -1481,466,0 -1483,466,0 -1485,466,0 -1486,468,0 -1488,468,0 -1490,468,0 -1492,468,0 -1494,468,0 -1496,468,0 -1498,468,0 -1580,468,0 -1582,468,0 -1487,468,0 -1489,468,0 -1491,468,0 -1493,468,0 -1495,468,0 -1497,468,0 -1499,468,0 -1581,468,0 -1583,468,0 -1584,470,0 -1586,470,0 -1588,470,0 -1500,470,0 -1502,470,0 -1505,470,0 -1507,470,0 -1509,470,0 -1511,470,0 -1585,470,0 -1587,470,0 -1589,470,0 -1501,470,0 -1503,470,0 -1506,470,0 -1508,470,0 -1510,470,0 -1512,470,0 -1513,472,0 -1515,472,0 -1517,472,0 -1519,472,0 -1521,472,0 -1523,472,0 -1525,472,0 -1527,472,0 -1529,472,0 -1514,472,0 -1516,472,0 -1518,472,0 -1520,472,0 -1522,472,0 -1524,472,0 -1526,472,0 -1528,472,0 -1530,472,0 -1531,474,0 -1533,474,0 -1535,474,0 -1538,474,0 -1540,474,0 -1542,474,0 -1544,474,0 -1546,474,0 -1548,474,0 -1420,474,0 -1534,474,0 -1537,474,0 -1539,474,0 -1541,474,0 -1543,474,0 -1545,474, -1547,474,0 -1549,474,0 -1391,476,0 -1551,476,0 -1553,476,0 -1555,476,0 -1557,476,0 -1559,476,0 -1561,476,0 -1563,476,0 -1565,476,0 -1420,476,0 -1552,476,0 -1554,476,0 -1556,476,0 -1558,476,0 -1560,476,0 -1562,476,0 -1564,476,0 -1566,476,0 -1567,478,0 -1550,478,0 -1569,478,0 -1571,478,0 -1573,478,0 -1575,478,0 -1577,478,0 -1579,478,0 -1182,478,0 -1420,478,0 -1568,478,0 -1570,478,0 -1572,478,0 -1574,478,0 -1576,478,0 -1578,478,0 -952,478,0 -1532,478,0 -862,481,0 -999999,481, -301,481,0 -676,481,0 -548,481,0 -198,481,0 -630,481,0 -78,481,0 -61,481,0 -1420,481,0 -1352,481,0 -1433,481,0 -538,481,0 -280,481,0 -627,481,0 -42,481,0 -79,481,0 -1090,481,0 -1377,483,0 -999999,483, -1379,483,0 -1248,483,0 -1551,483,0 -1586,483,0 -1169,483,0 -1312,483,0 -1240,483,0 -1141,483,0 -1053,483,0 -1550,483,0 -1563,483,0 -1515,483,0 -1406,483,0 -1166,483,0 -1456,483,0 -1245,483,0