08:19:35.361 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "134/137", "percentage": 97 } } } 08:19:35.364 Client { "id": "{2788257e-f116-43b3-832d-4548e40a13a3}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 1, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:35.396 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "135/137", "percentage": 98 } } } 08:19:35.396 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "136/137", "percentage": 99 } } } 08:19:35.399 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "kind": "end", "message": "137/137" } } } 08:19:35.449 Server { "id": 3, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Fetching" } } 08:19:35.449 Client { "id": 3, "jsonrpc": "2.0", "result": null } 08:19:35.449 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "begin", "title": "Fetching" } } } 08:19:35.450 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "report", "message": "metadata" } } } 08:19:35.450 Server { "id": "{6c0c4f8d-6c41-40b4-bb59-45238b918d13}", "jsonrpc": "2.0", "result": [ { "deprecated": false, "kind": 2, "name": "kit", "range": { "end": { "character": 8, "line": 11 }, "start": { "character": 0, "line": 10 } }, "selectionRange": { "end": { "character": 7, "line": 11 }, "start": { "character": 4, "line": 11 } }, "tags": [ ] }, { "deprecated": false, "kind": 2, "name": "glsl", "range": { "end": { "character": 13, "line": 12 }, "start": { "character": 0, "line": 12 } }, "selectionRange": { "end": { "character": 12, "line": 12 }, "start": { "character": 8, "line": 12 } }, "tags": [ ] }, { "deprecated": false, "kind": 2, "name": "gui", "range": { "end": { "character": 12, "line": 15 }, "start": { "character": 0, "line": 14 } }, "selectionRange": { "end": { "character": 11, "line": 15 }, "start": { "character": 8, "line": 15 } }, "tags": [ ] } ] } 08:19:35.451 Server { "id": "{f8f37a68-dcd2-4cd3-9fb4-a7e7572464a4}", "jsonrpc": "2.0", "result": [ ] } 08:19:35.451 Server { "id": "{c22cf6a6-bf65-4696-8acf-d70b0fffc113}", "jsonrpc": "2.0", "result": [ { "deprecated": false, "kind": 2, "name": "inline_shaders", "range": { "end": { "character": 19, "line": 0 }, "start": { "character": 0, "line": 0 } }, "selectionRange": { "end": { "character": 18, "line": 0 }, "start": { "character": 4, "line": 0 } }, "tags": [ ] } ] } 08:19:35.455 Server { "id": "{21da5df8-3d8e-4e65-8fc3-b14217752ee5}", "jsonrpc": "2.0", "result": [ { "deprecated": false, "detail": "fn()", "kind": 12, "name": "main", "range": { "end": { "character": 1, "line": 225 }, "start": { "character": 0, "line": 6 } }, "selectionRange": { "end": { "character": 7, "line": 6 }, "start": { "character": 3, "line": 6 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "usize", "kind": 14, "name": "TIME", "range": { "end": { "character": 29, "line": 229 }, "start": { "character": 2, "line": 229 } }, "selectionRange": { "end": { "character": 17, "line": 229 }, "start": { "character": 13, "line": 229 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn(active: bool) -> bool", "kind": 12, "name": "timeout", "range": { "end": { "character": 1, "line": 236 }, "start": { "character": 0, "line": 227 } }, "selectionRange": { "end": { "character": 10, "line": 227 }, "start": { "character": 3, "line": 227 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Option)>>", "kind": 8, "name": "handle", "range": { "end": { "character": 43, "line": 240 }, "start": { "character": 1, "line": 240 } }, "selectionRange": { "end": { "character": 7, "line": 240 }, "start": { "character": 1, "line": 240 } }, "tags": [ ] }, { "deprecated": false, "detail": "Option<(String, Box)>", "kind": 8, "name": "mesh", "range": { "end": { "character": 41, "line": 241 }, "start": { "character": 1, "line": 241 } }, "selectionRange": { "end": { "character": 5, "line": 241 }, "start": { "character": 1, "line": 241 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "DeferredMesh", "range": { "end": { "character": 1, "line": 242 }, "start": { "character": 0, "line": 238 } }, "selectionRange": { "end": { "character": 19, "line": 239 }, "start": { "character": 7, "line": 239 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self, name: &str) -> bool", "kind": 12, "name": "draw", "range": { "end": { "character": 2, "line": 275 }, "start": { "character": 1, "line": 244 } }, "selectionRange": { "end": { "character": 8, "line": 244 }, "start": { "character": 4, "line": 244 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl DeferredMesh", "range": { "end": { "character": 1, "line": 276 }, "start": { "character": 0, "line": 243 } }, "selectionRange": { "end": { "character": 17, "line": 243 }, "start": { "character": 5, "line": 243 } }, "tags": [ ] } ] } 08:19:35.456 Server { "id": "{bda0f10b-9bfd-4826-ad8b-827a149c9255}", "jsonrpc": "2.0", "result": [ { "deprecated": false, "kind": 12, "name": "SHADER", "range": { "end": { "character": 1, "line": 10 }, "start": { "character": 0, "line": 4 } }, "selectionRange": { "end": { "character": 19, "line": 5 }, "start": { "character": 13, "line": 5 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Shader", "kind": 8, "name": "s", "range": { "end": { "character": 14, "line": 13 }, "start": { "character": 1, "line": 13 } }, "selectionRange": { "end": { "character": 6, "line": 13 }, "start": { "character": 5, "line": 13 } }, "tags": [ ] }, { "deprecated": false, "detail": "Box", "kind": 8, "name": "src", "range": { "end": { "character": 14, "line": 14 }, "start": { "character": 1, "line": 14 } }, "selectionRange": { "end": { "character": 4, "line": 14 }, "start": { "character": 1, "line": 14 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "ShaderDyn", "range": { "end": { "character": 1, "line": 15 }, "start": { "character": 0, "line": 12 } }, "selectionRange": { "end": { "character": 20, "line": 12 }, "start": { "character": 11, "line": 12 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Object", "kind": 8, "name": "program", "range": { "end": { "character": 25, "line": 21 }, "start": { "character": 1, "line": 21 } }, "selectionRange": { "end": { "character": 8, "line": 21 }, "start": { "character": 1, "line": 21 } }, "tags": [ ] }, { "deprecated": false, "detail": "Box", "kind": 8, "name": "name", "range": { "end": { "character": 15, "line": 22 }, "start": { "character": 1, "line": 22 } }, "selectionRange": { "end": { "character": 5, "line": 22 }, "start": { "character": 1, "line": 22 } }, "tags": [ ] }, { "deprecated": false, "detail": "HashMap", "kind": 8, "name": "uniforms", "range": { "end": { "character": 28, "line": 23 }, "start": { "character": 1, "line": 23 } }, "selectionRange": { "end": { "character": 9, "line": 23 }, "start": { "character": 1, "line": 23 } }, "tags": [ ] }, { "deprecated": false, "detail": "HashMap", "kind": 8, "name": "tex_cache", "range": { "end": { "character": 29, "line": 24 }, "start": { "character": 1, "line": 24 } }, "selectionRange": { "end": { "character": 10, "line": 24 }, "start": { "character": 1, "line": 24 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "Shader", "range": { "end": { "character": 1, "line": 25 }, "start": { "character": 0, "line": 20 } }, "selectionRange": { "end": { "character": 17, "line": 20 }, "start": { "character": 11, "line": 20 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn<'a>(args: impl PureShaderArgs<'a>) -> Self", "kind": 12, "name": "pure", "range": { "end": { "character": 2, "line": 29 }, "start": { "character": 1, "line": 27 } }, "selectionRange": { "end": { "character": 12, "line": 27 }, "start": { "character": 8, "line": 27 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn<'a>(args: impl ShaderArgs<'a>) -> Res", "kind": 12, "name": "new", "range": { "end": { "character": 2, "line": 39 }, "start": { "character": 1, "line": 30 } }, "selectionRange": { "end": { "character": 11, "line": 30 }, "start": { "character": 8, "line": 30 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> ShaderBinding", "kind": 12, "name": "Bind", "range": { "end": { "character": 2, "line": 42 }, "start": { "character": 1, "line": 40 } }, "selectionRange": { "end": { "character": 12, "line": 40 }, "start": { "character": 8, "line": 40 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Shader", "range": { "end": { "character": 1, "line": 43 }, "start": { "character": 0, "line": 26 } }, "selectionRange": { "end": { "character": 11, "line": 26 }, "start": { "character": 5, "line": 26 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'l mut Shader", "kind": 8, "name": "shd", "range": { "end": { "character": 20, "line": 45 }, "start": { "character": 1, "line": 45 } }, "selectionRange": { "end": { "character": 4, "line": 45 }, "start": { "character": 1, "line": 45 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "ShaderBinding", "range": { "end": { "character": 1, "line": 46 }, "start": { "character": 0, "line": 44 } }, "selectionRange": { "end": { "character": 24, "line": 44 }, "start": { "character": 11, "line": 44 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(o: &'l mut Shader) -> Self", "kind": 12, "name": "new", "range": { "end": { "character": 2, "line": 52 }, "start": { "character": 1, "line": 48 } }, "selectionRange": { "end": { "character": 11, "line": 48 }, "start": { "character": 8, "line": 48 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, (id, name): (u32, &str), args: impl UniformArgs)", "kind": 12, "name": "Uniform", "range": { "end": { "character": 2, "line": 76 }, "start": { "character": 3, "line": 52 } }, "selectionRange": { "end": { "character": 15, "line": 53 }, "start": { "character": 8, "line": 53 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl ShaderBinding<'l>", "range": { "end": { "character": 1, "line": 77 }, "start": { "character": 0, "line": 47 } }, "selectionRange": { "end": { "character": 26, "line": 47 }, "start": { "character": 9, "line": 47 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self)", "kind": 12, "name": "drop", "range": { "end": { "character": 2, "line": 81 }, "start": { "character": 1, "line": 79 } }, "selectionRange": { "end": { "character": 8, "line": 79 }, "start": { "character": 4, "line": 79 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Drop for ShaderBinding<'_>", "range": { "end": { "character": 1, "line": 82 }, "start": { "character": 0, "line": 78 } }, "selectionRange": { "end": { "character": 31, "line": 78 }, "start": { "character": 14, "line": 78 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "kind": 22, "name": "vertex", "range": { "end": { "character": 11, "line": 85 }, "start": { "character": 1, "line": 85 } }, "selectionRange": { "end": { "character": 7, "line": 85 }, "start": { "character": 1, "line": 85 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "fragment", "range": { "end": { "character": 13, "line": 86 }, "start": { "character": 1, "line": 86 } }, "selectionRange": { "end": { "character": 9, "line": 86 }, "start": { "character": 1, "line": 86 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "geometry", "range": { "end": { "character": 13, "line": 87 }, "start": { "character": 1, "line": 87 } }, "selectionRange": { "end": { "character": 9, "line": 87 }, "start": { "character": 1, "line": 87 } }, "tags": [ ] } ], "deprecated": false, "kind": 10, "name": "ShaderType", "range": { "end": { "character": 1, "line": 88 }, "start": { "character": 0, "line": 84 } }, "selectionRange": { "end": { "character": 15, "line": 84 }, "start": { "character": 5, "line": 84 } }, "tags": [ ] }, { "deprecated": false, "detail": "[(GLenum, &str); 3]", "kind": 14, "name": "SHD_DEFS", "range": { "end": { "character": 137, "line": 89 }, "start": { "character": 0, "line": 89 } }, "selectionRange": { "end": { "character": 14, "line": 89 }, "start": { "character": 6, "line": 89 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "HashMap, u32>", "kind": 8, "name": "objects", "range": { "end": { "character": 32, "line": 93 }, "start": { "character": 1, "line": 93 } }, "selectionRange": { "end": { "character": 8, "line": 93 }, "start": { "character": 1, "line": 93 } }, "tags": [ ] }, { "deprecated": false, "detail": "HashMap, CString>", "kind": 8, "name": "sources", "range": { "end": { "character": 36, "line": 94 }, "start": { "character": 1, "line": 94 } }, "selectionRange": { "end": { "character": 8, "line": 94 }, "start": { "character": 1, "line": 94 } }, "tags": [ ] }, { "deprecated": false, "detail": "Vec>", "kind": 8, "name": "loading", "range": { "end": { "character": 31, "line": 95 }, "start": { "character": 1, "line": 95 } }, "selectionRange": { "end": { "character": 8, "line": 95 }, "start": { "character": 1, "line": 95 } }, "tags": [ ] }, { "deprecated": false, "detail": "HashMap, Arc<(Box, FS::Watch::WatchedFile)>>", "kind": 8, "name": "watched", "range": { "end": { "character": 76, "line": 96 }, "start": { "character": 1, "line": 96 } }, "selectionRange": { "end": { "character": 8, "line": 96 }, "start": { "character": 1, "line": 96 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "ShaderManager", "range": { "end": { "character": 1, "line": 97 }, "start": { "character": 0, "line": 91 } }, "selectionRange": { "end": { "character": 24, "line": 92 }, "start": { "character": 11, "line": 92 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(filename: impl ToString)", "kind": 12, "name": "LoadSources", "range": { "end": { "character": 2, "line": 111 }, "start": { "character": 1, "line": 99 } }, "selectionRange": { "end": { "character": 19, "line": 99 }, "start": { "character": 8, "line": 99 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(name: impl ToString, source: impl ToString)", "kind": 12, "name": "ForceSource", "range": { "end": { "character": 2, "line": 118 }, "start": { "character": 1, "line": 112 } }, "selectionRange": { "end": { "character": 19, "line": 112 }, "start": { "character": 8, "line": 112 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn()", "kind": 12, "name": "ClearSources", "range": { "end": { "character": 2, "line": 123 }, "start": { "character": 1, "line": 119 } }, "selectionRange": { "end": { "character": 20, "line": 119 }, "start": { "character": 8, "line": 119 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn((vert, geom, pix): CompileArgs) -> Res<(Object, Box)>", "kind": 12, "name": "compile", "range": { "end": { "character": 2, "line": 192 }, "start": { "character": 1, "line": 125 } }, "selectionRange": { "end": { "character": 11, "line": 125 }, "start": { "character": 4, "line": 125 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(name: &str, source: &str)", "kind": 12, "name": "inline_source", "range": { "end": { "character": 2, "line": 201 }, "start": { "character": 1, "line": 194 } }, "selectionRange": { "end": { "character": 17, "line": 194 }, "start": { "character": 4, "line": 194 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn() -> &'static mut Self", "kind": 12, "name": "get", "range": { "end": { "character": 2, "line": 205 }, "start": { "character": 1, "line": 203 } }, "selectionRange": { "end": { "character": 7, "line": 203 }, "start": { "character": 4, "line": 203 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl ShaderManager", "range": { "end": { "character": 1, "line": 206 }, "start": { "character": 0, "line": 98 } }, "selectionRange": { "end": { "character": 18, "line": 98 }, "start": { "character": 5, "line": 98 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(v: InlineShader) -> Self", "kind": 12, "name": "from", "range": { "end": { "character": 2, "line": 213 }, "start": { "character": 1, "line": 209 } }, "selectionRange": { "end": { "character": 8, "line": 209 }, "start": { "character": 4, "line": 209 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for C<'a>", "range": { "end": { "character": 1, "line": 214 }, "start": { "character": 0, "line": 208 } }, "selectionRange": { "end": { "character": 37, "line": 208 }, "start": { "character": 32, "line": 208 } }, "tags": [ ] }, { "deprecated": false, "kind": 23, "name": "InlineShader", "range": { "end": { "character": 42, "line": 215 }, "start": { "character": 0, "line": 215 } }, "selectionRange": { "end": { "character": 23, "line": 215 }, "start": { "character": 11, "line": 215 } }, "tags": [ ] } ] } 08:19:35.517 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "kind": "end" } } } 08:19:35.517 Server { "id": 4, "jsonrpc": "2.0", "method": "workspace/semanticTokens/refresh" } 08:19:35.518 Client { "id": "{722dcbf9-9287-47ff-a470-6f8ec5e7201c}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:35.518 Client { "id": 4, "jsonrpc": "2.0", "result": null } 08:19:35.821 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{2788257e-f116-43b3-832d-4548e40a13a3}" } } 08:19:35.823 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{2788257e-f116-43b3-832d-4548e40a13a3}", "jsonrpc": "2.0" } 08:19:36.060 Client { "id": "{7ff39242-5f0a-4c81-9b24-f6850243e6e2}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 34, "line": 17 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:36.673 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{7ff39242-5f0a-4c81-9b24-f6850243e6e2}" } } 08:19:36.674 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{7ff39242-5f0a-4c81-9b24-f6850243e6e2}", "jsonrpc": "2.0" } 08:19:36.936 Client { "id": "{f0e4fb1f-5f05-4537-96f9-e6985525abbc}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 17, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:36.956 Client { "id": "{75249e95-cc0b-4bdd-928f-c117cdd19085}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 17, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:37.262 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{75249e95-cc0b-4bdd-928f-c117cdd19085}" } } 08:19:37.262 Client { "id": "{beff90e1-950a-430c-934d-c54ee23147bd}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 17, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:37.263 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{75249e95-cc0b-4bdd-928f-c117cdd19085}", "jsonrpc": "2.0" } 08:19:37.494 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{beff90e1-950a-430c-934d-c54ee23147bd}" } } 08:19:37.494 Client { "id": "{ed679fc9-2270-4729-b03a-28533875948c}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 17, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:37.495 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{beff90e1-950a-430c-934d-c54ee23147bd}", "jsonrpc": "2.0" } 08:19:37.846 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{ed679fc9-2270-4729-b03a-28533875948c}" } } 08:19:37.846 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{f0e4fb1f-5f05-4537-96f9-e6985525abbc}" } } 08:19:37.847 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{ed679fc9-2270-4729-b03a-28533875948c}" } } 08:19:37.847 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{ed679fc9-2270-4729-b03a-28533875948c}", "jsonrpc": "2.0" } 08:19:37.848 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{f0e4fb1f-5f05-4537-96f9-e6985525abbc}", "jsonrpc": "2.0" } 08:19:38.049 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{ed679fc9-2270-4729-b03a-28533875948c}" } } 08:19:38.049 Client { "id": "{256f5d12-30f2-4204-be7d-8c7637534e4b}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 13, "line": 22 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:38.085 Client { "id": "{4264745d-6439-4002-87e3-ad501e9ee755}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 13, "line": 22 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:38.263 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{256f5d12-30f2-4204-be7d-8c7637534e4b}" } } 08:19:38.263 Client { "id": "{6e7c986c-eed7-43c3-bcf9-9a3d1a7f0cb5}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 13, "line": 22 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:38.263 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{256f5d12-30f2-4204-be7d-8c7637534e4b}", "jsonrpc": "2.0" } 08:19:38.549 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{6e7c986c-eed7-43c3-bcf9-9a3d1a7f0cb5}" } } 08:19:38.549 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{4264745d-6439-4002-87e3-ad501e9ee755}" } } 08:19:38.550 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{6e7c986c-eed7-43c3-bcf9-9a3d1a7f0cb5}" } } 08:19:38.550 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{6e7c986c-eed7-43c3-bcf9-9a3d1a7f0cb5}", "jsonrpc": "2.0" } 08:19:38.550 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{4264745d-6439-4002-87e3-ad501e9ee755}", "jsonrpc": "2.0" } 08:19:38.768 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{6e7c986c-eed7-43c3-bcf9-9a3d1a7f0cb5}" } } 08:19:38.768 Client { "id": "{698dda63-cffd-499d-a131-705e799995c6}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 13, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:38.788 Client { "id": "{679dd405-50bf-4846-8b89-b2100d3e4054}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 13, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:38.841 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{698dda63-cffd-499d-a131-705e799995c6}" } } 08:19:38.841 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{679dd405-50bf-4846-8b89-b2100d3e4054}" } } 08:19:38.841 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{698dda63-cffd-499d-a131-705e799995c6}" } } 08:19:38.842 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{698dda63-cffd-499d-a131-705e799995c6}", "jsonrpc": "2.0" } 08:19:38.842 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{679dd405-50bf-4846-8b89-b2100d3e4054}", "jsonrpc": "2.0" } 08:19:39.009 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{698dda63-cffd-499d-a131-705e799995c6}" } } 08:19:39.009 Client { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 16, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:39.079 Client { "id": "{2a0499d1-f174-45b9-bb1c-bba2a7d43459}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 16, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:39.748 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:39.748 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{2a0499d1-f174-45b9-bb1c-bba2a7d43459}" } } 08:19:39.749 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:39.749 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}", "jsonrpc": "2.0" } 08:19:39.749 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{2a0499d1-f174-45b9-bb1c-bba2a7d43459}", "jsonrpc": "2.0" } 08:19:40.006 Client { "id": "{14145b0d-689b-417b-b1c9-9cddb06f2314}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 13, "line": 21 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:19:43.705 Client { "jsonrpc": "2.0", "method": "textDocument/didOpen", "params": { "textDocument": { "languageId": "rust", "text": "use crate::uses::asyn::*;\nuse crate::uses::*;\nuse path::PathBuf;\n\npub mod Save {\n\tuse super::*;\n\n\tpub fn Write(p: impl Into, data: impl Into>) {\n\t\tsender().send((p.into(), MessageType::Write, data.into())).expect(FAILED_WRITE);\n\t}\n\tpub fn Append(p: impl Into, data: impl Into>) {\n\t\tsender().send((p.into(), MessageType::Append, data.into())).expect(FAILED_WRITE);\n\t}\n\tpub fn Archive(args: impl CompressArgs) {\n\t\tlet (p, data, level) = args.get();\n\t\tsender().send((p, MessageType::ComprW(level), data)).expect(FAILED_WRITE);\n\t}\n\n\ttype Args = (PathBuf, Vec, i32);\n\tpub trait CompressArgs {\n\t\tfn get(self) -> Args;\n\t}\n\timpl>, F: Into, C> CompressArgs for (F, T, C)\n\twhere\n\t\ti32: Cast,\n\t{\n\t\tfn get(self) -> Args {\n\t\t\t(self.0.into(), self.1.into(), i32(self.2))\n\t\t}\n\t}\n\timpl>, F: Into> CompressArgs for (F, T) {\n\t\tfn get(self) -> Args {\n\t\t\t(self.0.into(), self.1.into(), 0)\n\t\t}\n\t}\n\n\tenum MessageType {\n\t\tWrite,\n\t\tAppend,\n\t\tComprW(i32),\n\t\tClose,\n\t}\n\ttype Message = (PathBuf, MessageType, Vec);\n\tfn sender() -> &'static Sender {\n\t\tstatic SENDER: OnceLock> = OnceLock::new();\n\t\tSENDER.get_or_init(move || {\n\t\t\tlet (sn, rx): (Sender, Receiver) = chan::unbounded();\n\t\t\tlet handle = task::spawn(async move {\n\t\t\t\twhile let Ok(msg) = rx.recv_async().await {\n\t\t\t\t\tlet disk = task::spawn(async move {\n\t\t\t\t\t\tuse MessageType::*;\n\t\t\t\t\t\tlet (name, operation, data) = msg;\n\t\t\t\t\t\tlet file = match operation {\n\t\t\t\t\t\t\tWrite | ComprW(_) => fs::File::create(&name).await,\n\t\t\t\t\t\t\tAppend => fs::OpenOptions::new().append(true).create(true).open(&name).await,\n\t\t\t\t\t\t\tClose => return false,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif let Ok(mut file) = file {\n\t\t\t\t\t\t\tlet data = if let ComprW(l) = operation {\n\t\t\t\t\t\t\t\tOR_DEFAULT!(zstd::stream::encode_all(&data[..], l))\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tlet _ = file.write_all(&data).await;\n\t\t\t\t\t\t\tEXPECT!(file.sync_all().await);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tFAIL!(fmt_err(file, &name));\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrue\n\t\t\t\t\t});\n\t\t\t\t\tif !disk.await {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlogging::Logger::AddPostmortem(move || {\n\t\t\t\tsender().send((Def(), MessageType::Close, vec![])).expect(\"E| Failed to close write\");\n\t\t\t\ttask::block_on(handle);\n\t\t\t});\n\n\t\t\tsn\n\t\t})\n\t}\n}\n\npub mod Load {\n\tuse super::*;\n\tpub fn File(p: impl AsRef) -> Res> {\n\t\tlet p: &Path = p.as_ref();\n\t\tfmt_err(std::fs::read(p), p)\n\t}\n\tpub fn Text(p: impl AsRef) -> Res {\n\t\tlet p: &Path = p.as_ref();\n\t\tfmt_err(std::fs::read_to_string(p), p)\n\t}\n\tpub fn Archive(p: impl AsRef) -> Res> {\n\t\tlet decode = |p| -> Res<_> {\n\t\t\tlet f = Res(std::fs::File::open(p))?;\n\t\t\tlet b = Res(zstd::stream::decode_all(f))?;\n\t\t\tOk(b)\n\t\t};\n\t\tlet p = p.as_ref();\n\t\tfmt_err(decode(p), p)\n\t}\n}\n\n/*\nfn Lazy(func: F) -> io::Result\nwhere\n\tF: FnOnce() -> io::Result + Send + 'static,\n\tT: Send + 'static,\n{\n\ttask::spawn_blocking(func).await?\n}\n\nasync fn Lazy(func: F) -> io::Result\nwhere\n\tF: FnOnce() -> io::Result + Send + 'static,\n\tT: Send + 'static,\n{\n\ttask::spawn_blocking(func).await?\n}*/\n/*\nenum CachedFileState {\n\tLoading(Task>),\n\tDone(),\n}\n\nstruct CachedFile {\n\tpath: PathBuf,\n\taccessed: bool,\n\tstate: CachedFileState,\n}\nimpl CachedFile {\n\tpub fn new(p: impl Into) -> Self {\n\t\tSelf {\n\t\t\tpath: p.into(),\n\t\t\taccessed: true,\n\t\t\tstate: CachedFileState::Done(),\n\t\t}\n\t}\n\tpub fn changed(&mut self) -> bool {\n\t\tlet Self { state, accessed, .. } = self;\n\t\tif !*accessed || str == old_str {\n\t\t\treturn false;\n\t\t}\n\t\t*accessed = false;\n\t\t*old_str = str.clone();\n\t\ttrue\n\t}\n\tfn get() {}\n}*/\n\n#[cfg(not(feature = \"fsnotify\"))]\npub mod Watch {\n\tuse super::*;\n\n\tpub struct WatchedFile {\n\t\ttext: Box,\n\t}\n\timpl Text {\n\t\tpub fn changed(&self) -> bool {\n\t\t\tfalse\n\t\t}\n\t\tpub fn get(&mut self) -> &str {\n\t\t\t&self.text\n\t\t}\n\t}\n\tpub fn Text(p: impl Into) -> Res {\n\t\tlet path = p.into();\n\t\tlet text = Load::Text(&path)?.into_boxed_str();\n\t\tOk(Text { text })\n\t}\n}\n#[cfg(feature = \"fsnotify\")]\npub mod Watch {\n\tuse super::{Lazy::*, *};\n\tuse notify::*;\n\n\tpub fn Watch + Clone + 'static>(loader: impl Fn(A) -> LazyFile + 'static, p: A) -> WatchedFile {\n\t\tlet loader = {\n\t\t\tlet p = p.clone();\n\t\t\tBox(move || {\n\t\t\t\tlet p = p.clone();\n\t\t\t\tloader(p)\n\t\t\t})\n\t\t};\n\t\tlet file = loader();\n\n\t\tlet changed = Arc::new(Mutex::new(false));\n\t\tlet c = changed.clone();\n\n\t\tlet p = p.into();\n\t\tlet mut watcher = {\n\t\t\tlet p = p.clone();\n\t\t\tRes(recommended_watcher(move |r| match r {\n\t\t\t\tOk(_) => *c.lock().unwrap() = true, // TODO IT RESETS!!! FUCK!!!\n\t\t\t\tErr(e) => FAIL!(\"File {p:?}: {e}\"),\n\t\t\t}))\n\t\t}\n\t\t.map_err(|e| FAIL!(\"Watch {p:?}: {e}\"))\n\t\t.ok();\n\n\t\twatcher\n\t\t\t.as_mut()\n\t\t\t.map(|w| w.watch(&p, RecursiveMode::NonRecursive).unwrap_or_else(|_| FAIL!(\"Cannot watch {p:?}\")));\n\n\t\tWatchedFile { file, loader, changed, watcher }\n\t}\n\n\tpub struct WatchedFile {\n\t\tfile: LazyFile,\n\t\tloader: Box LazyFile>,\n\t\tchanged: Arc>,\n\t\twatcher: Option,\n\t}\n\n\timpl WatchedFile {\n\t\tpub fn changed(&mut self) -> bool {\n\t\t\tlet Self { file, loader, changed, .. } = self;\n\t\t\tif !*changed.lock().unwrap() {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t*changed.lock().unwrap() = false;\n\n\t\t\tlet mut new = loader();\n\t\t\tif new.get() != file.get() {\n\t\t\t\t*file = new;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tfalse\n\t\t}\n\t\tpub fn try_get(&mut self) -> Option<&mut T> {\n\t\t\tself.file.try_get()\n\t\t}\n\t\tpub fn get(&mut self) -> &mut T {\n\t\t\tself.file.get()\n\t\t}\n\t\tpub fn take(self) -> T {\n\t\t\tself.file.take()\n\t\t}\n\t}\n}\n\npub mod Lazy {\n\tuse super::*;\n\n\tpub fn File(p: impl Into) -> LazyFile> {\n\t\tlet p = p.into();\n\t\tLazyFile::Loading(task::spawn(async move { read_file(&p).await }))\n\t}\n\tpub fn Text(p: impl Into) -> LazyFile {\n\t\tlet p = p.into();\n\t\tLazyFile::Loading(task::spawn(async move { read_text(&p).await }))\n\t}\n\tpub fn Archive(p: impl Into) -> LazyFile> {\n\t\tlet p = p.into();\n\t\tLazyFile::Loading(task::spawn(async move {\n\t\t\tlet data = Res(read_file(&p).await)?;\n\t\t\tRes(zstd::stream::decode_all(&data[..]))\n\t\t}))\n\t}\n\n\tpub enum LazyFile {\n\t\tLoading(Task>),\n\t\tDone(T),\n\t}\n\n\timpl LazyFile {\n\t\tpub fn try_get(&mut self) -> Option<&mut T> {\n\t\t\tuse LazyFile::*;\n\t\t\tmatch self {\n\t\t\t\tDone(vec) => Some(vec),\n\t\t\t\tLoading(handle) => {\n\t\t\t\t\tlet res = task::block_on(task::poll_once(handle))?;\n\t\t\t\t\t*self = Done(OR_DEFAULT!(res));\n\t\t\t\t\tself.try_get()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpub fn get(&mut self) -> &mut T {\n\t\t\tuse LazyFile::*;\n\t\t\tmatch self {\n\t\t\t\tDone(vec) => vec,\n\t\t\t\tLoading(handle) => {\n\t\t\t\t\tlet res = task::block_on(handle);\n\t\t\t\t\t*self = Done(OR_DEFAULT!(res));\n\t\t\t\t\tself.get()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpub fn take(self) -> T {\n\t\t\tuse LazyFile::*;\n\t\t\tmatch self {\n\t\t\t\tDone(vec) => vec,\n\t\t\t\tLoading(handle) => OR_DEFAULT!(task::block_on(handle)),\n\t\t\t}\n\t\t}\n\t}\n}\n\npub async fn read_file(p: &Path) -> Res> {\n\tasync fn read(p: &Path) -> Res> {\n\t\tlet mut f = Res(fs::File::open(p).await)?;\n\t\tlet mut b = vec![];\n\t\tRes(f.read_to_end(&mut b).await)?;\n\t\tOk(b)\n\t}\n\tlet p = p.as_ref();\n\tfmt_err(read(p).await, p)\n}\npub async fn read_text(p: &Path) -> Res {\n\tasync fn read(p: &Path) -> Res {\n\t\tlet mut f = Res(fs::File::open(p).await)?;\n\t\tlet mut b = String::new();\n\t\tRes(f.read_to_string(&mut b).await)?;\n\t\tOk(b)\n\t}\n\tlet p = p.as_ref();\n\tfmt_err(read(p).await, p)\n}\n\nfn fmt_err(r: Result, p: &Path) -> Res {\n\tr.map_err(|e| format!(\"Could not open file {p:?} - {e}\"))\n}\n\nconst FAILED_WRITE: STR = \"E| Failed to send write\";\n\n#[cfg(not(feature = \"zstd\"))]\nmod zstd {\n\tpub mod stream {\n\t\tuse super::super::*;\n\t\tpub fn encode_all(s: &[u8], _: i32) -> Res> {\n\t\t\tOk(s.to_vec())\n\t\t}\n\t\tpub fn decode_all(mut s: R) -> Res> {\n\t\t\tlet mut b = vec![];\n\t\t\tRes(s.read_to_end(&mut b))?;\n\t\t\tOk(b)\n\t\t}\n\t}\n}\n", "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs", "version": 0 } } } 08:19:43.705 Client { "id": "{8c472ffd-b41d-4800-8ffb-5f6d3f354c92}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:43.732 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{8c472ffd-b41d-4800-8ffb-5f6d3f354c92}" } } 08:19:43.732 Client { "id": "{882db3c8-f8a8-49a6-ae3f-2e2c5d793d0c}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:43.740 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:43.740 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:43.741 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{8c472ffd-b41d-4800-8ffb-5f6d3f354c92}", "jsonrpc": "2.0" } 08:19:43.922 Client { "id": "{8566b2a7-fca4-4e1d-864c-3c7753d6e8a3}", "jsonrpc": "2.0", "method": "textDocument/documentSymbol", "params": { "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:44.002 Client { "id": "{5cd575c7-3e16-4dce-9b58-85a1705c7959}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 37, "line": 305 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:45.030 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:45.030 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{5cd575c7-3e16-4dce-9b58-85a1705c7959}" } } 08:19:45.030 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:45.034 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{5cd575c7-3e16-4dce-9b58-85a1705c7959}", "jsonrpc": "2.0" } 08:19:45.269 Client { "id": "{a2e021ad-451a-4a78-8afd-4c1f5a32c3b0}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 30, "line": 259 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:45.360 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{00e11744-f520-40cb-a12c-05cc77ee96e0}" } } 08:19:45.360 Client { "id": "{59e98cd6-8e42-4889-bb2a-287c7fc2695e}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 30, "line": 259 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:45.544 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{59e98cd6-8e42-4889-bb2a-287c7fc2695e}" } } 08:19:45.545 Client { "id": "{13dc32b7-4a88-4149-8b6b-15d2f0bca533}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 30, "line": 259 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:45.545 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{59e98cd6-8e42-4889-bb2a-287c7fc2695e}", "jsonrpc": "2.0" } 08:19:45.707 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{13dc32b7-4a88-4149-8b6b-15d2f0bca533}" } } 08:19:45.707 Client { "id": "{1eb3fa8a-b8de-42bf-b1f9-db1ad50816cf}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 30, "line": 259 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:45.708 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{13dc32b7-4a88-4149-8b6b-15d2f0bca533}", "jsonrpc": "2.0" } 08:19:46.203 Server { "id": "{997403ca-f28f-4cf3-928f-db518a163222}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 18, "line": 0 }, "start": { "character": 4, "line": 0 } } }, { "range": { "end": { "character": 22, "line": 1 }, "start": { "character": 8, "line": 1 } } } ] } 08:19:46.203 Server { "id": 5, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Fetching" } } 08:19:46.203 Client { "id": 5, "jsonrpc": "2.0", "result": null } 08:19:46.203 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "begin", "title": "Fetching" } } } 08:19:46.203 Server { "id": "{2ea3ee02-42af-4341-bc75-0a89713a39fb}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 6, "line": 11 }, "start": { "character": 0, "line": 11 } } }, { "range": { "end": { "character": 6, "line": 0 }, "start": { "character": 0, "line": 0 } } } ] } 08:19:46.204 Server { "id": "{c23e4ca0-9e8c-449f-a317-0189a292dd2e}", "jsonrpc": "2.0", "result": null } 08:19:46.226 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "report", "message": "metadata" } } } 08:19:46.412 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "kind": "end" } } } 08:19:46.412 Server { "id": 6, "jsonrpc": "2.0", "method": "workspace/semanticTokens/refresh" } 08:19:46.412 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{882db3c8-f8a8-49a6-ae3f-2e2c5d793d0c}" } } 08:19:46.412 Client { "id": "{fbeacb04-f92d-4ed7-bfbe-f3de41543977}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:46.412 Client { "id": 6, "jsonrpc": "2.0", "result": null } 08:19:46.413 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{882db3c8-f8a8-49a6-ae3f-2e2c5d793d0c}", "jsonrpc": "2.0" } 08:19:52.243 Server { "id": "{3f4350f9-0648-413b-b94a-d0242f8ec5e2}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 33, "line": 240 }, "start": { "character": 30, "line": 240 } } } ] } 08:19:52.615 Server { "id": "{14145b0d-689b-417b-b1c9-9cddb06f2314}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 16, "line": 21 }, "start": { "character": 10, "line": 21 } } }, { "range": { "end": { "character": 58, "line": 125 }, "start": { "character": 52, "line": 125 } } }, { "range": { "end": { "character": 19, "line": 178 }, "start": { "character": 13, "line": 178 } } } ] } 08:19:52.621 Server { "id": "{722dcbf9-9287-47ff-a470-6f8ec5e7201c}", "jsonrpc": "2.0", "result": { "data": [ 0, 0, 3, 6, 0, 0, 4, 5, 6, 0, 0, 5, 2, 11, 0, 0, 3, 4, 9, 0, 0, 4, 2, 11, 0, 0, 5, 6, 9, 65536, 0, 6, 2, 11, 0, 0, 5, 7, 9, 0, 0, 7, 2, 11, 0, 0, 5, 6, 9, 65536, 0, 6, 2, 11, 0, 0, 5, 5, 9, 65536, 0, 5, 2, 11, 0, 0, 5, 5, 9, 65536, 0, 5, 2, 11, 0, 0, 5, 7, 9, 65536, 0, 7, 2, 11, 0, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66560, 0, 5, 2, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 3, 4, 9, 65536, 0, 4, 2, 11, 0, 1, 0, 3, 6, 0, 0, 4, 3, 9, 9224, 0, 3, 2, 11, 0, 0, 2, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 7, 15, 8200, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 12, 26, 8224, 0, 12, 1, 21, 32, 1, 0, 11, 6, 0, 0, 11, 1, 7, 0, 0, 2, 6, 7, 2, 1, 31, 1, 11, 0, 2, 2, 3, 6, 0, 0, 4, 5, 6, 0, 0, 53, 1, 11, 0, 4, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 9, 15, 65538, 1, 1, 3, 6, 0, 0, 4, 1, 13, 65538, 0, 3, 6, 15, 65536, 1, 1, 3, 13, 2, 0, 5, 3, 15, 8200, 0, 4, 3, 27, 0, 2, 0, 18, 0, 0, 1, 0, 52, 0, 0, 1, 0, 3, 0, 0, 2, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 6, 15, 65538, 1, 1, 7, 13, 2, 0, 9, 6, 15, 65536, 0, 7, 7, 15, 65536, 1, 1, 4, 13, 2, 0, 6, 3, 15, 8200, 0, 4, 3, 27, 0, 1, 1, 8, 13, 2, 0, 10, 7, 15, 8192, 0, 8, 3, 27, 0, 0, 5, 3, 27, 0, 1, 1, 9, 13, 2, 0, 11, 7, 15, 8192, 0, 8, 3, 27, 0, 0, 5, 3, 27, 0, 2, 0, 4, 6, 0, 0, 5, 6, 15, 65536, 1, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 65542, 0, 5, 2, 41, 2, 0, 4, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 14, 5, 65536, 0, 15, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 4, 47, 0, 1, 2, 4, 47, 0, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65540, 0, 4, 4, 12, 256, 0, 5, 1, 11, 0, 0, 1, 6, 8, 8456, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 65542, 0, 4, 2, 41, 2, 0, 4, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 10, 5, 65536, 0, 11, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 4, 47, 0, 1, 2, 3, 6, 0, 0, 5, 7, 17, 2, 0, 9, 4, 17, 2, 0, 6, 1, 11, 0, 0, 2, 13, 15, 65536, 0, 13, 2, 11, 0, 0, 2, 7, 8, 4, 0, 8, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 3, 8, 327936, 0, 6, 1, 11, 512, 2, 2, 2, 2, 8200, 0, 3, 4, 47, 0, 1, 3, 7, 13, 0, 1, 3, 4, 13, 0, 1, 3, 8, 13, 0, 0, 10, 3, 4, 65536, 1, 3, 9, 13, 0, 0, 11, 3, 4, 65536, 3, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 229378, 0, 6, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 6, 2, 11, 0, 0, 3, 13, 15, 65536, 1, 2, 13, 15, 65536, 0, 13, 2, 11, 0, 0, 2, 3, 8, 65540, 0, 4, 4, 46, 164096, 3, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 13, 15, 65538, 0, 14, 2, 41, 2, 1, 1, 3, 13, 2, 0, 6, 2, 41, 0, 0, 3, 3, 6, 0, 0, 4, 6, 15, 65536, 2, 0, 4, 6, 0, 0, 5, 2, 41, 2, 0, 4, 13, 15, 65536, 0, 14, 2, 41, 0, 1, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 65542, 0, 4, 1, 12, 163842, 0, 4, 2, 41, 0, 0, 3, 3, 6, 0, 0, 4, 6, 15, 65536, 0, 8, 2, 11, 0, 0, 3, 4, 47, 0, 1, 2, 7, 15, 65536, 0, 7, 2, 11, 0, 0, 2, 4, 8, 327684, 0, 5, 1, 12, 163840, 0, 1, 1, 11, 0, 0, 1, 7, 13, 0, 0, 7, 1, 11, 0, 0, 1, 3, 13, 65536, 1, 2, 7, 15, 65536, 0, 7, 2, 11, 0, 0, 2, 4, 8, 327684, 0, 5, 1, 12, 163840, 0, 1, 1, 11, 0, 0, 1, 7, 13, 0, 0, 7, 1, 11, 0, 0, 1, 3, 13, 65536, 1, 2, 4, 47, 0, 0, 7, 3, 13, 0, 0, 5, 1, 12, 163840, 1, 3, 21, 0, 0, 1, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 229378, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 7, 2, 12, 2, 0, 4, 4, 12, 131074, 0, 8, 3, 27, 0, 0, 6, 3, 27, 0, 0, 6, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 11, 5, 65536, 1, 2, 6, 7, 0, 0, 6, 1, 7, 0, 0, 2, 5, 6, 82944, 0, 5, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 4, 9, 81920, 0, 4, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 2, 9, 81920, 0, 2, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 10, 9, 81920, 0, 10, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 12, 9, 81920, 0, 12, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 2, 4, 81920, 0, 3, 4, 12, 147456, 0, 5, 1, 11, 16384, 0, 1, 1, 13, 16384, 0, 2, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 2, 12, 16384, 0, 4, 39, 14, 16384, 1, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 5, 17, 131074, 0, 7, 1, 11, 0, 0, 2, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 3, 13, 0, 0, 3, 1, 11, 0, 0, 1, 8, 13, 0, 0, 8, 1, 11, 0, 0, 1, 3, 8, 139264, 0, 4, 1, 11, 0, 0, 1, 2, 12, 0, 1, 3, 3, 6, 0, 0, 4, 14, 17, 163842, 0, 15, 1, 11, 0, 0, 2, 11, 7, 0, 0, 11, 1, 7, 0, 0, 2, 7, 15, 24576, 0, 8, 3, 27, 16384, 0, 5, 6, 15, 24584, 0, 11, 3, 4, 81920, 1, 3, 6, 7, 0, 0, 6, 1, 7, 0, 0, 2, 14, 17, 180224, 0, 14, 1, 11, 16384, 0, 1, 5, 8, 188416, 0, 6, 2, 12, 16384, 0, 3, 1, 11, 16384, 0, 1, 9, 8, 24832, 0, 10, 4, 12, 147456, 0, 4, 1, 11, 16384, 0, 1, 4, 8, 286728, 0, 8, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 4, 12, 147456, 0, 6, 28, 14, 16384, 0, 28, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 14, 16384, 1, 3, 1, 11, 0, 0, 1, 5, 17, 131072, 1, 4, 4, 6, 512, 1, 3, 3, 6, 0, 0, 4, 6, 17, 2, 0, 7, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 7, 15, 8200, 0, 7, 2, 11, 0, 0, 2, 3, 8, 8204, 0, 4, 4, 12, 131072, 1, 4, 2, 2, 8200, 0, 3, 3, 17, 2, 0, 5, 2, 11, 0, 0, 3, 3, 17, 0, 1, 4, 3, 2, 8200, 0, 4, 1, 17, 2, 0, 3, 2, 11, 0, 1, 5, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 1, 17, 16384, 1, 5, 6, 6, 512, 3, 3, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 18, 39, 16384, 0, 19, 4, 6, 16384, 0, 4, 1, 11, 16384, 0, 1, 3, 39, 16384, 0, 3, 1, 11, 16384, 0, 1, 7, 39, 16384, 0, 7, 1, 11, 16384, 0, 1, 3, 39, 16384, 0, 5, 6, 39, 16384, 0, 6, 1, 11, 16384, 0, 1, 6, 39, 16384, 1, 3, 2, 6, 512, 0, 3, 4, 17, 0, 0, 5, 2, 11, 0, 0, 3, 1, 10, 0, 0, 1, 1, 10, 0, 1, 4, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 12, 14, 16384, 0, 12, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 11, 14, 16384, 0, 11, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 31, 14, 16384, 0, 33, 4, 46, 180224, 0, 4, 1, 11, 16384, 0, 1, 3, 13, 16384, 0, 3, 1, 11, 16384, 0, 1, 4, 13, 16384, 2, 3, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 3, 13, 0, 0, 3, 1, 11, 0, 0, 1, 8, 13, 0, 0, 8, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 2, 12, 0, 0, 4, 4, 17, 0, 1, 3, 4, 17, 0, 3, 2, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 3, 8, 327936, 0, 4, 4, 17, 0, 0, 6, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 3, 13, 0, 0, 3, 1, 11, 0, 0, 1, 9, 13, 0, 3, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 6, 0, 0, 4, 13, 15, 65536, 0, 14, 2, 41, 0, 1, 1, 2, 6, 0, 0, 3, 4, 8, 425986, 0, 6, 3, 6, 0, 0, 4, 4, 46, 163842, 1, 2, 7, 15, 65536, 0, 7, 2, 11, 0, 0, 2, 6, 8, 327684, 4, 0, 4, 6, 0, 0, 5, 10, 3, 2, 1, 1, 6, 2, 2, 0, 7, 1, 11, 0, 0, 2, 1, 10, 0, 1, 1, 8, 2, 2, 0, 9, 1, 11, 0, 0, 2, 1, 10, 0, 1, 1, 8, 2, 2, 0, 9, 1, 11, 0, 0, 2, 1, 10, 0, 2, 0, 5, 6, 0, 0, 6, 8, 17, 134, 0, 12, 6, 15, 0, 0, 9, 3, 27, 0, 0, 6, 1, 10, 0, 0, 3, 1, 11, 0, 0, 4, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 13, 15, 0, 0, 15, 8, 14, 0, 0, 12, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 15, 15, 0, 0, 17, 7, 14, 0, 0, 11, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 15, 15, 0, 0, 17, 10, 14, 0, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 7, 33, 8232, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 13, 15, 65538, 1, 1, 7, 13, 2, 0, 9, 7, 15, 8192, 0, 8, 3, 15, 8200, 0, 4, 3, 27, 0, 0, 6, 3, 27, 0, 1, 1, 7, 13, 2, 0, 9, 7, 15, 8192, 0, 8, 3, 15, 8200, 0, 4, 3, 27, 0, 0, 6, 7, 15, 8200, 1, 1, 7, 13, 2, 0, 9, 3, 15, 8200, 0, 4, 4, 15, 8192, 0, 5, 10, 49, 65536, 1, 1, 7, 13, 2, 0, 9, 7, 15, 8192, 0, 8, 3, 15, 8200, 0, 4, 3, 27, 0, 0, 6, 3, 15, 8200, 0, 5, 3, 15, 8200, 0, 4, 3, 27, 0, 0, 6, 2, 9, 65536, 0, 2, 2, 11, 0, 0, 2, 5, 9, 65536, 0, 5, 2, 11, 0, 0, 2, 11, 15, 65536, 0, 12, 6, 15, 8200, 2, 0, 4, 6, 0, 0, 5, 13, 15, 65536, 1, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 65542, 0, 12, 8, 12, 2, 0, 10, 4, 6, 0, 0, 5, 8, 5, 8200, 1, 2, 3, 6, 0, 0, 4, 4, 47, 0, 0, 7, 7, 13, 0, 0, 9, 7, 13, 0, 0, 9, 2, 11, 0, 0, 5, 1, 11, 0, 0, 2, 4, 47, 0, 0, 4, 2, 11, 0, 0, 2, 3, 8, 4, 1, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 8, 12, 0, 0, 8, 1, 11, 0, 0, 1, 9, 8, 401416, 1, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 4, 8, 172040, 0, 5, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 5, 4, 8192, 0, 6, 5, 6, 16, 0, 6, 4, 6, 0, 1, 3, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 10, 7, 0, 0, 10, 1, 7, 0, 0, 2, 2, 9, 81920, 0, 2, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 9, 4, 81936, 0, 10, 4, 17, 16384, 0, 4, 1, 11, 16384, 0, 1, 6, 8, 417800, 0, 9, 1, 11, 16384, 0, 1, 5, 6, 16912, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 20, 4, 65536, 0, 21, 1, 11, 0, 0, 1, 4, 17, 0, 0, 6, 1, 11, 0, 0, 1, 4, 17, 0, 2, 3, 53, 0, 0, 1, 0, 124, 0, 0, 2, 3, 1, 17, 0, 3, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 65542, 0, 12, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 8, 5, 8200, 0, 10, 6, 12, 2, 0, 8, 4, 6, 0, 0, 5, 8, 5, 8200, 1, 2, 3, 6, 0, 0, 4, 4, 47, 0, 0, 7, 7, 13, 0, 0, 9, 7, 13, 0, 0, 9, 7, 13, 0, 0, 9, 2, 11, 0, 0, 5, 1, 11, 0, 0, 2, 4, 47, 0, 0, 4, 2, 11, 0, 0, 2, 3, 8, 4, 1, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 9, 8, 401416, 0, 11, 1, 11, 0, 0, 1, 4, 8, 270600, 1, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 1, 11, 0, 0, 1, 4, 17, 0, 1, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 1, 11, 0, 0, 1, 4, 17, 0, 0, 5, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 5, 1, 12, 2, 0, 3, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 1, 39, 16384, 1, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 4, 17, 256, 0, 6, 7, 15, 8200, 0, 7, 2, 11, 0, 0, 2, 3, 8, 8204, 0, 4, 6, 12, 0, 0, 6, 1, 11, 0, 0, 1, 9, 8, 401416, 0, 12, 1, 11, 0, 0, 1, 6, 8, 8456, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 12, 8, 65542, 1, 2, 3, 6, 0, 0, 4, 4, 47, 0, 0, 7, 7, 13, 0, 0, 9, 2, 11, 0, 0, 5, 1, 11, 0, 0, 2, 4, 47, 0, 0, 4, 2, 11, 0, 0, 2, 3, 8, 4, 1, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 4, 8, 139264, 0, 6, 1, 11, 0, 0, 1, 8, 8, 270600, 0, 15, 1, 12, 2, 0, 4, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 1, 39, 16384, 1, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 5, 8, 172032, 3, 1, 2, 6, 0, 0, 3, 7, 8, 6, 0, 9, 4, 12, 2, 0, 6, 4, 12, 2, 0, 6, 3, 12, 2, 0, 6, 11, 49, 65536, 0, 13, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 5, 6, 15, 65536, 0, 7, 7, 15, 65536, 0, 10, 3, 15, 8200, 0, 4, 3, 27, 0, 1, 2, 3, 6, 0, 0, 4, 5, 17, 2, 0, 6, 1, 11, 0, 1, 3, 53, 14, 0, 1, 3, 96, 14, 0, 1, 5, 6, 0, 0, 2, 2, 3, 6, 0, 0, 4, 10, 17, 66, 0, 11, 1, 11, 0, 0, 4, 4, 12, 2, 0, 6, 3, 12, 2, 0, 7, 1, 49, 65536, 0, 2, 2, 41, 0, 1, 3, 3, 6, 0, 0, 4, 4, 47, 0, 0, 7, 7, 13, 0, 0, 9, 7, 13, 0, 0, 9, 7, 13, 0, 0, 9, 2, 11, 0, 0, 5, 1, 11, 0, 0, 2, 4, 47, 0, 0, 4, 2, 11, 0, 0, 2, 3, 8, 4, 1, 3, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 5, 17, 131074, 0, 7, 1, 11, 0, 0, 2, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 3, 8, 139264, 0, 4, 1, 11, 0, 0, 1, 1, 11, 0, 0, 1, 4, 12, 0, 1, 4, 6, 6, 512, 0, 7, 2, 2, 8200, 0, 3, 1, 11, 0, 0, 1, 5, 17, 131072, 3, 3, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 8, 4, 8192, 0, 9, 5, 6, 16, 1, 4, 6, 9, 8192, 0, 6, 2, 11, 0, 0, 2, 4, 4, 8192, 0, 5, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 5, 8, 172040, 0, 6, 2, 11, 0, 1, 5, 1, 11, 0, 0, 1, 4, 8, 270592, 0, 6, 1, 12, 2, 0, 3, 1, 12, 0, 1, 5, 1, 11, 0, 0, 1, 8, 8, 270592, 0, 10, 1, 12, 2, 1, 6, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 9, 8, 270600, 1, 7, 1, 11, 0, 0, 1, 8, 8, 270600, 0, 11, 4, 12, 2, 0, 6, 4, 12, 2, 0, 7, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 5, 8, 401416, 0, 9, 4, 12, 256, 0, 5, 1, 11, 0, 0, 1, 3, 8, 8456, 0, 8, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 15, 14, 16384, 0, 15, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 20, 14, 16384, 0, 22, 1, 11, 0, 0, 1, 4, 8, 262144, 2, 5, 1, 11, 0, 0, 1, 5, 6, 528, 3, 3, 3, 6, 0, 0, 5, 4, 17, 2, 0, 7, 3, 17, 2, 0, 5, 9, 17, 131074, 0, 12, 1, 11, 0, 0, 3, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 10, 8, 8456, 0, 12, 1, 11, 0, 0, 1, 14, 8, 8456, 0, 18, 8, 17, 132, 0, 9, 3, 12, 0, 0, 4, 2, 6, 0, 0, 3, 5, 27, 0, 1, 3, 3, 6, 0, 0, 4, 6, 17, 131074, 0, 7, 1, 11, 0, 0, 2, 3, 4, 65536, 0, 4, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 3, 8, 139264, 0, 4, 1, 11, 0, 0, 1, 4, 17, 0, 0, 6, 1, 11, 0, 0, 1, 7, 8, 8456, 0, 12, 6, 7, 8200, 0, 6, 1, 7, 0, 0, 2, 4, 14, 16384, 0, 4, 1, 38, 0, 0, 1, 9, 17, 0, 0, 9, 1, 38, 0, 0, 1, 8, 14, 16384, 0, 8, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 19, 14, 16384, 0, 21, 1, 11, 512, 2, 3, 3, 6, 0, 0, 4, 3, 17, 2, 0, 4, 1, 11, 0, 0, 2, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 3, 39, 16384, 1, 3, 6, 7, 0, 0, 6, 1, 7, 0, 0, 2, 3, 17, 16384, 0, 4, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 1, 10, 16384, 0, 3, 18, 14, 16384, 0, 18, 1, 38, 0, 0, 1, 9, 17, 0, 0, 9, 1, 38, 0, 0, 1, 15, 14, 16384, 0, 15, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 1, 3, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 3, 39, 16384, 0, 5, 1, 10, 16384, 0, 4, 6, 39, 16384, 0, 6, 1, 11, 16384, 0, 1, 6, 39, 16384, 0, 10, 3, 39, 16384, 0, 5, 4, 39, 16384, 1, 3, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 13, 39, 16384, 0, 14, 3, 39, 16384, 1, 3, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 6, 17, 32770, 0, 8, 3, 27, 0, 0, 4, 1, 11, 0, 0, 2, 1, 10, 0, 1, 3, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 11, 39, 16384, 0, 12, 3, 39, 16384, 0, 5, 2, 39, 16384, 0, 4, 14, 39, 16384, 0, 17, 3, 6, 16384, 0, 4, 6, 39, 16384, 1, 3, 2, 6, 512, 0, 3, 6, 15, 0, 0, 6, 2, 11, 0, 0, 2, 2, 4, 0, 0, 3, 6, 17, 32768, 0, 8, 2, 11, 0, 0, 3, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 4, 15, 0, 1, 4, 3, 6, 0, 0, 4, 3, 17, 2, 0, 4, 1, 11, 0, 0, 2, 6, 7, 8200, 0, 6, 1, 7, 0, 0, 2, 17, 14, 16384, 0, 17, 1, 38, 0, 0, 1, 9, 17, 0, 0, 9, 1, 38, 0, 0, 1, 8, 14, 16384, 0, 8, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 2, 36, 0, 0, 2, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 0, 3, 16, 4, 81920, 0, 17, 3, 17, 16384, 1, 4, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 3, 39, 16384, 1, 4, 6, 6, 512, 0, 7, 3, 2, 8200, 0, 4, 3, 17, 256, 3, 3, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 4, 17, 256, 0, 6, 3, 17, 0, 1, 3, 2, 2, 8200, 0, 3, 3, 17, 0, 3, 2, 3, 6, 0, 0, 4, 10, 3, 0, 0, 10, 2, 11, 0, 1, 2, 3, 6, 0, 0, 5, 4, 17, 2, 0, 6, 7, 17, 2, 0, 9, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 4, 17, 2, 0, 6, 1, 11, 0, 0, 2, 4, 12, 0, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 6, 7, 8200, 0, 6, 1, 7, 0, 0, 2, 3, 14, 16384, 0, 3, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 3, 14, 16384, 0, 3, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 3, 14, 16384, 0, 3, 1, 38, 0, 0, 1, 3, 17, 0, 0, 3, 1, 38, 0, 0, 1, 1, 14, 16384, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 3, 7, 8200, 0, 3, 1, 7, 0, 0, 3, 4, 12, 16384, 0, 6, 6, 2, 16384, 0, 10, 4, 17, 16384, 0, 6, 8, 2, 16384, 0, 12, 3, 12, 16384, 0, 5, 8, 2, 16384, 1, 4, 1, 17, 0, 0, 3, 1, 17, 0, 1, 4, 4, 6, 512, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 6, 7, 8200, 0, 6, 1, 7, 0, 0, 2, 3, 14, 16384, 0, 3, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 3, 14, 16384, 0, 3, 1, 38, 0, 0, 1, 3, 17, 0, 0, 3, 1, 38, 0, 0, 1, 1, 14, 16384, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 3, 7, 8200, 0, 3, 1, 7, 0, 0, 3, 4, 12, 16384, 0, 6, 6, 2, 16384, 0, 10, 3, 12, 16384, 0, 5, 8, 2, 16384, 1, 4, 1, 17, 0, 0, 3, 1, 17, 0, 3, 2, 3, 6, 0, 0, 4, 7, 17, 2, 0, 8, 1, 11, 0, 0, 2, 7, 17, 0, 0, 7, 1, 11, 0, 0, 1, 9, 8, 270600, 0, 11, 1, 11, 0, 0, 1, 3, 8, 270600, 0, 4, 10, 17, 64, 0, 11, 1, 11, 0, 0, 1, 7, 8, 270600, 0, 7, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 10, 1, 11, 512, 1, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 6, 15, 65536, 0, 6, 2, 11, 0, 0, 2, 3, 8, 65540, 1, 2, 3, 6, 0, 0, 4, 3, 17, 2, 0, 4, 1, 11, 0, 0, 2, 4, 17, 0, 0, 4, 1, 11, 0, 0, 1, 3, 13, 65536, 2, 2, 7, 17, 0, 0, 7, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 8, 8, 270600, 0, 11, 1, 12, 2, 0, 3, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 3, 39, 16384, 0, 5, 1, 39, 16384, 1, 2, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 11, 39, 16384, 0, 12, 3, 39, 16384, 1, 2, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 6, 17, 32770, 0, 8, 3, 27, 0, 0, 4, 1, 11, 0, 0, 2, 1, 10, 0, 1, 2, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 3, 39, 16384, 0, 5, 2, 39, 16384, 0, 4, 11, 39, 16384, 0, 14, 3, 6, 16384, 0, 4, 6, 39, 16384, 1, 2, 7, 17, 0, 0, 7, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 8, 8, 270600, 0, 11, 1, 12, 2, 0, 3, 7, 7, 0, 0, 7, 1, 7, 0, 0, 2, 2, 39, 16384, 0, 4, 12, 39, 16384, 0, 13, 3, 39, 16384, 0, 5, 1, 39, 16384, 2, 2, 2, 6, 512, 0, 3, 6, 15, 0, 0, 6, 2, 11, 0, 0, 2, 2, 4, 0, 0, 3, 6, 17, 32768, 0, 8, 2, 11, 0, 0, 3, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 5, 15, 0, 1, 3, 6, 6, 512, 0, 7, 3, 2, 8200, 0, 4, 6, 7, 8200, 0, 6, 1, 7, 0, 0, 2, 23, 14, 16384, 0, 23, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 2, 14, 16384, 0, 2, 1, 38, 0, 0, 1, 3, 17, 0, 0, 3, 1, 38, 0, 0, 1, 2, 36, 0, 0, 2, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 0, 3, 16, 4, 81920, 0, 17, 3, 17, 16384, 3, 2, 2, 2, 8200, 0, 4, 4, 17, 0, 0, 6, 4, 17, 0, 0, 4, 1, 11, 0, 0, 1, 4, 8, 270600, 3, 1, 2, 6, 0, 0, 3, 13, 8, 6, 0, 14, 4, 12, 131074, 0, 7, 3, 27, 0, 0, 5, 6, 12, 131074, 0, 9, 3, 27, 0, 1, 2, 3, 6, 0, 0, 4, 1, 17, 163842, 0, 2, 1, 11, 0, 0, 2, 4, 47, 0, 0, 4, 2, 11, 0, 0, 2, 3, 8, 4, 1, 2, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 6, 17, 131074, 0, 8, 1, 11, 0, 0, 2, 1, 17, 163840, 0, 1, 1, 11, 0, 0, 1, 7, 13, 0, 0, 7, 1, 11, 0, 0, 1, 3, 8, 139264, 0, 4, 4, 12, 131072, 1, 3, 6, 7, 0, 0, 6, 1, 7, 0, 0, 2, 1, 11, 16384, 0, 1, 6, 17, 147456, 0, 7, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 7, 15, 24584, 0, 7, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 3, 8, 24588, 0, 4, 6, 12, 147456, 0, 7, 1, 11, 16384, 0, 1, 6, 8, 24840, 0, 10, 8, 14, 16384, 0, 8, 1, 38, 0, 0, 1, 4, 17, 0, 0, 4, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 16, 14, 16384, 1, 4, 4, 6, 512, 1, 3, 1, 17, 163840, 0, 1, 1, 11, 0, 0, 1, 7, 13, 0, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 4, 12, 131072, 0, 4, 1, 11, 0, 0, 1, 4, 8, 270344, 0, 8, 7, 15, 8200, 0, 7, 2, 11, 0, 0, 2, 3, 8, 8204, 0, 4, 6, 12, 131072, 0, 7, 1, 11, 0, 0, 1, 6, 8, 8456, 4, 1, 2, 6, 0, 0, 3, 3, 8, 6, 0, 6, 2, 11, 0, 0, 4, 7, 41, 0, 0, 8, 3, 6, 0, 0, 4, 4, 47, 0, 1, 2, 11, 7, 0, 0, 11, 1, 7, 0, 0, 2, 13, 15, 81920, 0, 17, 3, 4, 81920, 4, 0, 4, 6, 0, 0, 5, 2, 41, 2, 0, 4, 4, 5, 8200, 0, 5, 12, 15, 65536, 0, 14, 3, 6, 0, 0, 4, 1, 49, 65536, 0, 2, 2, 41, 0, 1, 1, 2, 6, 0, 0, 3, 4, 8, 262150, 0, 5, 1, 12, 2, 0, 3, 12, 15, 65536, 0, 14, 2, 11, 0, 0, 3, 4, 47, 0, 1, 2, 3, 6, 0, 0, 4, 12, 15, 65536, 0, 13, 1, 17, 131074, 0, 3, 3, 17, 131074, 0, 5, 1, 11, 0, 0, 2, 1, 12, 0, 1, 2, 13, 15, 65536, 0, 13, 2, 11, 0, 0, 2, 13, 8, 4, 0, 14, 1, 17, 131072, 0, 3, 3, 17, 131072, 1, 2, 1, 17, 131072, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270344, 3, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 12, 15, 65538, 0, 13, 3, 6, 0, 0, 4, 3, 49, 65536, 0, 5, 3, 6, 0, 0, 4, 3, 49, 65536 ], "resultId": "6" } } 08:19:52.629 Server { "id": "{8566b2a7-fca4-4e1d-864c-3c7753d6e8a3}", "jsonrpc": "2.0", "result": [ { "children": [ { "deprecated": false, "detail": "fn(p: impl Into, data: impl Into>)", "kind": 12, "name": "Write", "range": { "end": { "character": 2, "line": 9 }, "start": { "character": 1, "line": 7 } }, "selectionRange": { "end": { "character": 13, "line": 7 }, "start": { "character": 8, "line": 7 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(p: impl Into, data: impl Into>)", "kind": 12, "name": "Append", "range": { "end": { "character": 2, "line": 12 }, "start": { "character": 1, "line": 10 } }, "selectionRange": { "end": { "character": 14, "line": 10 }, "start": { "character": 8, "line": 10 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(args: impl CompressArgs)", "kind": 12, "name": "Archive", "range": { "end": { "character": 2, "line": 16 }, "start": { "character": 1, "line": 13 } }, "selectionRange": { "end": { "character": 15, "line": 13 }, "start": { "character": 8, "line": 13 } }, "tags": [ ] }, { "deprecated": false, "detail": "(PathBuf, Vec, i32)", "kind": 26, "name": "Args", "range": { "end": { "character": 37, "line": 18 }, "start": { "character": 1, "line": 18 } }, "selectionRange": { "end": { "character": 10, "line": 18 }, "start": { "character": 6, "line": 18 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(self) -> Args", "kind": 12, "name": "get", "range": { "end": { "character": 23, "line": 20 }, "start": { "character": 2, "line": 20 } }, "selectionRange": { "end": { "character": 8, "line": 20 }, "start": { "character": 5, "line": 20 } }, "tags": [ ] } ], "deprecated": false, "kind": 11, "name": "CompressArgs", "range": { "end": { "character": 2, "line": 21 }, "start": { "character": 1, "line": 19 } }, "selectionRange": { "end": { "character": 23, "line": 19 }, "start": { "character": 11, "line": 19 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(self) -> Args", "kind": 12, "name": "get", "range": { "end": { "character": 3, "line": 28 }, "start": { "character": 2, "line": 26 } }, "selectionRange": { "end": { "character": 8, "line": 26 }, "start": { "character": 5, "line": 26 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl CompressArgs for (F, T, C)", "range": { "end": { "character": 2, "line": 29 }, "start": { "character": 1, "line": 22 } }, "selectionRange": { "end": { "character": 71, "line": 22 }, "start": { "character": 62, "line": 22 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(self) -> Args", "kind": 12, "name": "get", "range": { "end": { "character": 3, "line": 33 }, "start": { "character": 2, "line": 31 } }, "selectionRange": { "end": { "character": 8, "line": 31 }, "start": { "character": 5, "line": 31 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl CompressArgs for (F, T)", "range": { "end": { "character": 2, "line": 34 }, "start": { "character": 1, "line": 30 } }, "selectionRange": { "end": { "character": 65, "line": 30 }, "start": { "character": 59, "line": 30 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "kind": 22, "name": "Write", "range": { "end": { "character": 7, "line": 37 }, "start": { "character": 2, "line": 37 } }, "selectionRange": { "end": { "character": 7, "line": 37 }, "start": { "character": 2, "line": 37 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Append", "range": { "end": { "character": 8, "line": 38 }, "start": { "character": 2, "line": 38 } }, "selectionRange": { "end": { "character": 8, "line": 38 }, "start": { "character": 2, "line": 38 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "ComprW", "range": { "end": { "character": 13, "line": 39 }, "start": { "character": 2, "line": 39 } }, "selectionRange": { "end": { "character": 8, "line": 39 }, "start": { "character": 2, "line": 39 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Close", "range": { "end": { "character": 7, "line": 40 }, "start": { "character": 2, "line": 40 } }, "selectionRange": { "end": { "character": 7, "line": 40 }, "start": { "character": 2, "line": 40 } }, "tags": [ ] } ], "deprecated": false, "kind": 10, "name": "MessageType", "range": { "end": { "character": 2, "line": 41 }, "start": { "character": 1, "line": 36 } }, "selectionRange": { "end": { "character": 17, "line": 36 }, "start": { "character": 6, "line": 36 } }, "tags": [ ] }, { "deprecated": false, "detail": "(PathBuf, MessageType, Vec)", "kind": 26, "name": "Message", "range": { "end": { "character": 48, "line": 42 }, "start": { "character": 1, "line": 42 } }, "selectionRange": { "end": { "character": 13, "line": 42 }, "start": { "character": 6, "line": 42 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "OnceLock>", "kind": 14, "name": "SENDER", "range": { "end": { "character": 61, "line": 44 }, "start": { "character": 2, "line": 44 } }, "selectionRange": { "end": { "character": 15, "line": 44 }, "start": { "character": 9, "line": 44 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn() -> &'static Sender", "kind": 12, "name": "sender", "range": { "end": { "character": 2, "line": 85 }, "start": { "character": 1, "line": 43 } }, "selectionRange": { "end": { "character": 10, "line": 43 }, "start": { "character": 4, "line": 43 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "Save", "range": { "end": { "character": 1, "line": 86 }, "start": { "character": 0, "line": 4 } }, "selectionRange": { "end": { "character": 12, "line": 4 }, "start": { "character": 8, "line": 4 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: impl AsRef) -> Res>", "kind": 12, "name": "File", "range": { "end": { "character": 2, "line": 93 }, "start": { "character": 1, "line": 90 } }, "selectionRange": { "end": { "character": 12, "line": 90 }, "start": { "character": 8, "line": 90 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(p: impl AsRef) -> Res", "kind": 12, "name": "Text", "range": { "end": { "character": 2, "line": 97 }, "start": { "character": 1, "line": 94 } }, "selectionRange": { "end": { "character": 12, "line": 94 }, "start": { "character": 8, "line": 94 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(p: impl AsRef) -> Res>", "kind": 12, "name": "Archive", "range": { "end": { "character": 2, "line": 106 }, "start": { "character": 1, "line": 98 } }, "selectionRange": { "end": { "character": 15, "line": 98 }, "start": { "character": 8, "line": 98 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "Load", "range": { "end": { "character": 1, "line": 107 }, "start": { "character": 0, "line": 88 } }, "selectionRange": { "end": { "character": 12, "line": 88 }, "start": { "character": 8, "line": 88 } }, "tags": [ ] }, { "children": [ { "children": [ { "deprecated": false, "detail": "Box", "kind": 8, "name": "text", "range": { "end": { "character": 16, "line": 161 }, "start": { "character": 2, "line": 161 } }, "selectionRange": { "end": { "character": 6, "line": 161 }, "start": { "character": 2, "line": 161 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "WatchedFile", "range": { "end": { "character": 2, "line": 162 }, "start": { "character": 1, "line": 160 } }, "selectionRange": { "end": { "character": 23, "line": 160 }, "start": { "character": 12, "line": 160 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "changed", "range": { "end": { "character": 3, "line": 166 }, "start": { "character": 2, "line": 164 } }, "selectionRange": { "end": { "character": 16, "line": 164 }, "start": { "character": 9, "line": 164 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> &str", "kind": 12, "name": "get", "range": { "end": { "character": 3, "line": 169 }, "start": { "character": 2, "line": 167 } }, "selectionRange": { "end": { "character": 12, "line": 167 }, "start": { "character": 9, "line": 167 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Text", "range": { "end": { "character": 2, "line": 170 }, "start": { "character": 1, "line": 163 } }, "selectionRange": { "end": { "character": 10, "line": 163 }, "start": { "character": 6, "line": 163 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(p: impl Into) -> Res", "kind": 12, "name": "Text", "range": { "end": { "character": 2, "line": 175 }, "start": { "character": 1, "line": 171 } }, "selectionRange": { "end": { "character": 12, "line": 171 }, "start": { "character": 8, "line": 171 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "Watch", "range": { "end": { "character": 1, "line": 176 }, "start": { "character": 0, "line": 156 } }, "selectionRange": { "end": { "character": 13, "line": 157 }, "start": { "character": 8, "line": 157 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn + Clone + 'static>(loader: impl Fn(A) -> LazyFile + 'static, p: A) -> WatchedFile", "kind": 12, "name": "Watch", "range": { "end": { "character": 2, "line": 211 }, "start": { "character": 1, "line": 182 } }, "selectionRange": { "end": { "character": 13, "line": 182 }, "start": { "character": 8, "line": 182 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "LazyFile", "kind": 8, "name": "file", "range": { "end": { "character": 19, "line": 214 }, "start": { "character": 2, "line": 214 } }, "selectionRange": { "end": { "character": 6, "line": 214 }, "start": { "character": 2, "line": 214 } }, "tags": [ ] }, { "deprecated": false, "detail": "Box LazyFile>", "kind": 8, "name": "loader", "range": { "end": { "character": 38, "line": 215 }, "start": { "character": 2, "line": 215 } }, "selectionRange": { "end": { "character": 8, "line": 215 }, "start": { "character": 2, "line": 215 } }, "tags": [ ] }, { "deprecated": false, "detail": "Arc>", "kind": 8, "name": "changed", "range": { "end": { "character": 27, "line": 216 }, "start": { "character": 2, "line": 216 } }, "selectionRange": { "end": { "character": 9, "line": 216 }, "start": { "character": 2, "line": 216 } }, "tags": [ ] }, { "deprecated": false, "detail": "Option", "kind": 8, "name": "watcher", "range": { "end": { "character": 37, "line": 217 }, "start": { "character": 2, "line": 217 } }, "selectionRange": { "end": { "character": 9, "line": 217 }, "start": { "character": 2, "line": 217 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "WatchedFile", "range": { "end": { "character": 2, "line": 218 }, "start": { "character": 1, "line": 213 } }, "selectionRange": { "end": { "character": 23, "line": 213 }, "start": { "character": 12, "line": 213 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self) -> bool", "kind": 12, "name": "changed", "range": { "end": { "character": 3, "line": 235 }, "start": { "character": 2, "line": 221 } }, "selectionRange": { "end": { "character": 16, "line": 221 }, "start": { "character": 9, "line": 221 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> Option<&mut T>", "kind": 12, "name": "try_get", "range": { "end": { "character": 3, "line": 238 }, "start": { "character": 2, "line": 236 } }, "selectionRange": { "end": { "character": 16, "line": 236 }, "start": { "character": 9, "line": 236 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> &mut T", "kind": 12, "name": "get", "range": { "end": { "character": 3, "line": 241 }, "start": { "character": 2, "line": 239 } }, "selectionRange": { "end": { "character": 12, "line": 239 }, "start": { "character": 9, "line": 239 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self) -> T", "kind": 12, "name": "take", "range": { "end": { "character": 3, "line": 244 }, "start": { "character": 2, "line": 242 } }, "selectionRange": { "end": { "character": 13, "line": 242 }, "start": { "character": 9, "line": 242 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl WatchedFile", "range": { "end": { "character": 2, "line": 245 }, "start": { "character": 1, "line": 220 } }, "selectionRange": { "end": { "character": 37, "line": 220 }, "start": { "character": 23, "line": 220 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "Watch", "range": { "end": { "character": 1, "line": 246 }, "start": { "character": 0, "line": 177 } }, "selectionRange": { "end": { "character": 13, "line": 178 }, "start": { "character": 8, "line": 178 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: impl Into) -> LazyFile>", "kind": 12, "name": "File", "range": { "end": { "character": 2, "line": 254 }, "start": { "character": 1, "line": 251 } }, "selectionRange": { "end": { "character": 12, "line": 251 }, "start": { "character": 8, "line": 251 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(p: impl Into) -> LazyFile", "kind": 12, "name": "Text", "range": { "end": { "character": 2, "line": 258 }, "start": { "character": 1, "line": 255 } }, "selectionRange": { "end": { "character": 12, "line": 255 }, "start": { "character": 8, "line": 255 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(p: impl Into) -> LazyFile>", "kind": 12, "name": "Archive", "range": { "end": { "character": 2, "line": 265 }, "start": { "character": 1, "line": 259 } }, "selectionRange": { "end": { "character": 15, "line": 259 }, "start": { "character": 8, "line": 259 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "kind": 22, "name": "Loading", "range": { "end": { "character": 23, "line": 268 }, "start": { "character": 2, "line": 268 } }, "selectionRange": { "end": { "character": 9, "line": 268 }, "start": { "character": 2, "line": 268 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Done", "range": { "end": { "character": 9, "line": 269 }, "start": { "character": 2, "line": 269 } }, "selectionRange": { "end": { "character": 6, "line": 269 }, "start": { "character": 2, "line": 269 } }, "tags": [ ] } ], "deprecated": false, "kind": 10, "name": "LazyFile", "range": { "end": { "character": 2, "line": 270 }, "start": { "character": 1, "line": 267 } }, "selectionRange": { "end": { "character": 18, "line": 267 }, "start": { "character": 10, "line": 267 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self) -> Option<&mut T>", "kind": 12, "name": "try_get", "range": { "end": { "character": 3, "line": 283 }, "start": { "character": 2, "line": 273 } }, "selectionRange": { "end": { "character": 16, "line": 273 }, "start": { "character": 9, "line": 273 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> &mut T", "kind": 12, "name": "get", "range": { "end": { "character": 3, "line": 294 }, "start": { "character": 2, "line": 284 } }, "selectionRange": { "end": { "character": 12, "line": 284 }, "start": { "character": 9, "line": 284 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self) -> T", "kind": 12, "name": "take", "range": { "end": { "character": 3, "line": 301 }, "start": { "character": 2, "line": 295 } }, "selectionRange": { "end": { "character": 13, "line": 295 }, "start": { "character": 9, "line": 295 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl LazyFile", "range": { "end": { "character": 2, "line": 302 }, "start": { "character": 1, "line": 272 } }, "selectionRange": { "end": { "character": 29, "line": 272 }, "start": { "character": 18, "line": 272 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "Lazy", "range": { "end": { "character": 1, "line": 303 }, "start": { "character": 0, "line": 248 } }, "selectionRange": { "end": { "character": 12, "line": 248 }, "start": { "character": 8, "line": 248 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: &Path) -> Res>", "kind": 12, "name": "read", "range": { "end": { "character": 2, "line": 311 }, "start": { "character": 1, "line": 306 } }, "selectionRange": { "end": { "character": 14, "line": 306 }, "start": { "character": 10, "line": 306 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn(p: &Path) -> Res>", "kind": 12, "name": "read_file", "range": { "end": { "character": 1, "line": 314 }, "start": { "character": 0, "line": 305 } }, "selectionRange": { "end": { "character": 22, "line": 305 }, "start": { "character": 13, "line": 305 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: &Path) -> Res", "kind": 12, "name": "read", "range": { "end": { "character": 2, "line": 321 }, "start": { "character": 1, "line": 316 } }, "selectionRange": { "end": { "character": 14, "line": 316 }, "start": { "character": 10, "line": 316 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn(p: &Path) -> Res", "kind": 12, "name": "read_text", "range": { "end": { "character": 1, "line": 324 }, "start": { "character": 0, "line": 315 } }, "selectionRange": { "end": { "character": 22, "line": 315 }, "start": { "character": 13, "line": 315 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(r: Result, p: &Path) -> Res", "kind": 12, "name": "fmt_err", "range": { "end": { "character": 1, "line": 328 }, "start": { "character": 0, "line": 326 } }, "selectionRange": { "end": { "character": 10, "line": 326 }, "start": { "character": 3, "line": 326 } }, "tags": [ ] }, { "deprecated": false, "detail": "STR", "kind": 14, "name": "FAILED_WRITE", "range": { "end": { "character": 52, "line": 330 }, "start": { "character": 0, "line": 330 } }, "selectionRange": { "end": { "character": 18, "line": 330 }, "start": { "character": 6, "line": 330 } }, "tags": [ ] }, { "children": [ { "children": [ { "deprecated": false, "detail": "fn(s: &[u8], _: i32) -> Res>", "kind": 12, "name": "encode_all", "range": { "end": { "character": 3, "line": 338 }, "start": { "character": 2, "line": 336 } }, "selectionRange": { "end": { "character": 19, "line": 336 }, "start": { "character": 9, "line": 336 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(mut s: R) -> Res>", "kind": 12, "name": "decode_all", "range": { "end": { "character": 3, "line": 343 }, "start": { "character": 2, "line": 339 } }, "selectionRange": { "end": { "character": 19, "line": 339 }, "start": { "character": 9, "line": 339 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "stream", "range": { "end": { "character": 2, "line": 344 }, "start": { "character": 1, "line": 334 } }, "selectionRange": { "end": { "character": 15, "line": 334 }, "start": { "character": 9, "line": 334 } }, "tags": [ ] } ], "deprecated": false, "kind": 2, "name": "zstd", "range": { "end": { "character": 1, "line": 345 }, "start": { "character": 0, "line": 332 } }, "selectionRange": { "end": { "character": 8, "line": 333 }, "start": { "character": 4, "line": 333 } }, "tags": [ ] } ] } 08:19:52.651 Server { "id": "{1eb3fa8a-b8de-42bf-b1f9-db1ad50816cf}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 18, "line": 1166 }, "start": { "character": 11, "line": 1166 } }, "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } ] } 08:19:52.676 Client { "jsonrpc": "2.0", "method": "textDocument/didOpen", "params": { "textDocument": { "languageId": "rust", "text": "//! Cross-platform path manipulation.\n//!\n//! This module provides two types, [`PathBuf`] and [`Path`] (akin to [`String`]\n//! and [`str`]), for working with paths abstractly. These types are thin wrappers\n//! around [`OsString`] and [`OsStr`] respectively, meaning that they work directly\n//! on strings according to the local platform's path syntax.\n//!\n//! Paths can be parsed into [`Component`]s by iterating over the structure\n//! returned by the [`components`] method on [`Path`]. [`Component`]s roughly\n//! correspond to the substrings between path separators (`/` or `\\`). You can\n//! reconstruct an equivalent path from components with the [`push`] method on\n//! [`PathBuf`]; note that the paths may differ syntactically by the\n//! normalization described in the documentation for the [`components`] method.\n//!\n//! ## Case sensitivity\n//!\n//! Unless otherwise indicated path methods that do not access the filesystem,\n//! such as [`Path::starts_with`] and [`Path::ends_with`], are case sensitive no\n//! matter the platform or filesystem. An exception to this is made for Windows\n//! drive letters.\n//!\n//! ## Simple usage\n//!\n//! Path manipulation includes both parsing components from slices and building\n//! new owned paths.\n//!\n//! To parse a path, you can create a [`Path`] slice from a [`str`]\n//! slice and start asking questions:\n//!\n//! ```\n//! use std::path::Path;\n//! use std::ffi::OsStr;\n//!\n//! let path = Path::new(\"/tmp/foo/bar.txt\");\n//!\n//! let parent = path.parent();\n//! assert_eq!(parent, Some(Path::new(\"/tmp/foo\")));\n//!\n//! let file_stem = path.file_stem();\n//! assert_eq!(file_stem, Some(OsStr::new(\"bar\")));\n//!\n//! let extension = path.extension();\n//! assert_eq!(extension, Some(OsStr::new(\"txt\")));\n//! ```\n//!\n//! To build or modify paths, use [`PathBuf`]:\n//!\n//! ```\n//! use std::path::PathBuf;\n//!\n//! // This way works...\n//! let mut path = PathBuf::from(\"c:\\\\\");\n//!\n//! path.push(\"windows\");\n//! path.push(\"system32\");\n//!\n//! path.set_extension(\"dll\");\n//!\n//! // ... but push is best used if you don't know everything up\n//! // front. If you do, this way is better:\n//! let path: PathBuf = [\"c:\\\\\", \"windows\", \"system32.dll\"].iter().collect();\n//! ```\n//!\n//! [`components`]: Path::components\n//! [`push`]: PathBuf::push\n\n#![stable(feature = \"rust1\", since = \"1.0.0\")]\n#![deny(unsafe_op_in_unsafe_fn)]\n\n#[cfg(test)]\nmod tests;\n\nuse crate::borrow::{Borrow, Cow};\nuse crate::cmp;\nuse crate::collections::TryReserveError;\nuse crate::error::Error;\nuse crate::fmt;\nuse crate::fs;\nuse crate::hash::{Hash, Hasher};\nuse crate::io;\nuse crate::iter::FusedIterator;\nuse crate::ops::{self, Deref};\nuse crate::rc::Rc;\nuse crate::str::FromStr;\nuse crate::sync::Arc;\n\nuse crate::ffi::{OsStr, OsString};\nuse crate::sys;\nuse crate::sys::path::{is_sep_byte, is_verbatim_sep, parse_prefix, MAIN_SEP_STR};\n\n////////////////////////////////////////////////////////////////////////////////\n// GENERAL NOTES\n////////////////////////////////////////////////////////////////////////////////\n//\n// Parsing in this module is done by directly transmuting OsStr to [u8] slices,\n// taking advantage of the fact that OsStr always encodes ASCII characters\n// as-is. Eventually, this transmutation should be replaced by direct uses of\n// OsStr APIs for parsing, but it will take a while for those to become\n// available.\n\n////////////////////////////////////////////////////////////////////////////////\n// Windows Prefixes\n////////////////////////////////////////////////////////////////////////////////\n\n/// Windows path prefixes, e.g., `C:` or `\\\\server\\share`.\n///\n/// Windows uses a variety of path prefix styles, including references to drive\n/// volumes (like `C:`), network shared folders (like `\\\\server\\share`), and\n/// others. In addition, some path prefixes are \"verbatim\" (i.e., prefixed with\n/// `\\\\?\\`), in which case `/` is *not* treated as a separator and essentially\n/// no normalization is performed.\n///\n/// # Examples\n///\n/// ```\n/// use std::path::{Component, Path, Prefix};\n/// use std::path::Prefix::*;\n/// use std::ffi::OsStr;\n///\n/// fn get_path_prefix(s: &str) -> Prefix<'_> {\n/// let path = Path::new(s);\n/// match path.components().next().unwrap() {\n/// Component::Prefix(prefix_component) => prefix_component.kind(),\n/// _ => panic!(),\n/// }\n/// }\n///\n/// # if cfg!(windows) {\n/// assert_eq!(Verbatim(OsStr::new(\"pictures\")),\n/// get_path_prefix(r\"\\\\?\\pictures\\kittens\"));\n/// assert_eq!(VerbatimUNC(OsStr::new(\"server\"), OsStr::new(\"share\")),\n/// get_path_prefix(r\"\\\\?\\UNC\\server\\share\"));\n/// assert_eq!(VerbatimDisk(b'C'), get_path_prefix(r\"\\\\?\\c:\\\"));\n/// assert_eq!(DeviceNS(OsStr::new(\"BrainInterface\")),\n/// get_path_prefix(r\"\\\\.\\BrainInterface\"));\n/// assert_eq!(UNC(OsStr::new(\"server\"), OsStr::new(\"share\")),\n/// get_path_prefix(r\"\\\\server\\share\"));\n/// assert_eq!(Disk(b'C'), get_path_prefix(r\"C:\\Users\\Rust\\Pictures\\Ferris\"));\n/// # }\n/// ```\n#[derive(Copy, Clone, Debug, Hash, PartialOrd, Ord, PartialEq, Eq)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub enum Prefix<'a> {\n /// Verbatim prefix, e.g., `\\\\?\\cat_pics`.\n ///\n /// Verbatim prefixes consist of `\\\\?\\` immediately followed by the given\n /// component.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n Verbatim(#[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr),\n\n /// Verbatim prefix using Windows' _**U**niform **N**aming **C**onvention_,\n /// e.g., `\\\\?\\UNC\\server\\share`.\n ///\n /// Verbatim UNC prefixes consist of `\\\\?\\UNC\\` immediately followed by the\n /// server's hostname and a share name.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n VerbatimUNC(\n #[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr,\n #[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr,\n ),\n\n /// Verbatim disk prefix, e.g., `\\\\?\\C:`.\n ///\n /// Verbatim disk prefixes consist of `\\\\?\\` immediately followed by the\n /// drive letter and `:`.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n VerbatimDisk(#[stable(feature = \"rust1\", since = \"1.0.0\")] u8),\n\n /// Device namespace prefix, e.g., `\\\\.\\COM42`.\n ///\n /// Device namespace prefixes consist of `\\\\.\\` (possibly using `/`\n /// instead of `\\`), immediately followed by the device name.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n DeviceNS(#[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr),\n\n /// Prefix using Windows' _**U**niform **N**aming **C**onvention_, e.g.\n /// `\\\\server\\share`.\n ///\n /// UNC prefixes consist of the server's hostname and a share name.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n UNC(\n #[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr,\n #[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr,\n ),\n\n /// Prefix `C:` for the given disk drive.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n Disk(#[stable(feature = \"rust1\", since = \"1.0.0\")] u8),\n}\n\nimpl<'a> Prefix<'a> {\n #[inline]\n fn len(&self) -> usize {\n use self::Prefix::*;\n fn os_str_len(s: &OsStr) -> usize {\n s.as_encoded_bytes().len()\n }\n match *self {\n Verbatim(x) => 4 + os_str_len(x),\n VerbatimUNC(x, y) => {\n 8 + os_str_len(x) + if os_str_len(y) > 0 { 1 + os_str_len(y) } else { 0 }\n }\n VerbatimDisk(_) => 6,\n UNC(x, y) => 2 + os_str_len(x) + if os_str_len(y) > 0 { 1 + os_str_len(y) } else { 0 },\n DeviceNS(x) => 4 + os_str_len(x),\n Disk(_) => 2,\n }\n }\n\n /// Determines if the prefix is verbatim, i.e., begins with `\\\\?\\`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Prefix::*;\n /// use std::ffi::OsStr;\n ///\n /// assert!(Verbatim(OsStr::new(\"pictures\")).is_verbatim());\n /// assert!(VerbatimUNC(OsStr::new(\"server\"), OsStr::new(\"share\")).is_verbatim());\n /// assert!(VerbatimDisk(b'C').is_verbatim());\n /// assert!(!DeviceNS(OsStr::new(\"BrainInterface\")).is_verbatim());\n /// assert!(!UNC(OsStr::new(\"server\"), OsStr::new(\"share\")).is_verbatim());\n /// assert!(!Disk(b'C').is_verbatim());\n /// ```\n #[inline]\n #[must_use]\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn is_verbatim(&self) -> bool {\n use self::Prefix::*;\n matches!(*self, Verbatim(_) | VerbatimDisk(_) | VerbatimUNC(..))\n }\n\n #[inline]\n fn is_drive(&self) -> bool {\n matches!(*self, Prefix::Disk(_))\n }\n\n #[inline]\n fn has_implicit_root(&self) -> bool {\n !self.is_drive()\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Exposed parsing helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/// Determines whether the character is one of the permitted path\n/// separators for the current platform.\n///\n/// # Examples\n///\n/// ```\n/// use std::path;\n///\n/// assert!(path::is_separator('/')); // '/' works for both Unix and Windows\n/// assert!(!path::is_separator('❤'));\n/// ```\n#[must_use]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub fn is_separator(c: char) -> bool {\n c.is_ascii() && is_sep_byte(c as u8)\n}\n\n/// The primary separator of path components for the current platform.\n///\n/// For example, `/` on Unix and `\\` on Windows.\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub const MAIN_SEPARATOR: char = crate::sys::path::MAIN_SEP;\n\n/// The primary separator of path components for the current platform.\n///\n/// For example, `/` on Unix and `\\` on Windows.\n#[stable(feature = \"main_separator_str\", since = \"1.68.0\")]\npub const MAIN_SEPARATOR_STR: &str = crate::sys::path::MAIN_SEP_STR;\n\n////////////////////////////////////////////////////////////////////////////////\n// Misc helpers\n////////////////////////////////////////////////////////////////////////////////\n\n// Iterate through `iter` while it matches `prefix`; return `None` if `prefix`\n// is not a prefix of `iter`, otherwise return `Some(iter_after_prefix)` giving\n// `iter` after having exhausted `prefix`.\nfn iter_after<'a, 'b, I, J>(mut iter: I, mut prefix: J) -> Option\nwhere\n I: Iterator> + Clone,\n J: Iterator>,\n{\n loop {\n let mut iter_next = iter.clone();\n match (iter_next.next(), prefix.next()) {\n (Some(ref x), Some(ref y)) if x == y => (),\n (Some(_), Some(_)) => return None,\n (Some(_), None) => return Some(iter),\n (None, None) => return Some(iter),\n (None, Some(_)) => return None,\n }\n iter = iter_next;\n }\n}\n\n// Detect scheme on Redox\nfn has_redox_scheme(s: &[u8]) -> bool {\n cfg!(target_os = \"redox\") && s.contains(&b':')\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Cross-platform, iterator-independent parsing\n////////////////////////////////////////////////////////////////////////////////\n\n/// Says whether the first byte after the prefix is a separator.\nfn has_physical_root(s: &[u8], prefix: Option>) -> bool {\n let path = if let Some(p) = prefix { &s[p.len()..] } else { s };\n !path.is_empty() && is_sep_byte(path[0])\n}\n\n// basic workhorse for splitting stem and extension\nfn rsplit_file_at_dot(file: &OsStr) -> (Option<&OsStr>, Option<&OsStr>) {\n if file.as_encoded_bytes() == b\"..\" {\n return (Some(file), None);\n }\n\n // The unsafety here stems from converting between &OsStr and &[u8]\n // and back. This is safe to do because (1) we only look at ASCII\n // contents of the encoding and (2) new &OsStr values are produced\n // only from ASCII-bounded slices of existing &OsStr values.\n let mut iter = file.as_encoded_bytes().rsplitn(2, |b| *b == b'.');\n let after = iter.next();\n let before = iter.next();\n if before == Some(b\"\") {\n (Some(file), None)\n } else {\n unsafe {\n (\n before.map(|s| OsStr::from_encoded_bytes_unchecked(s)),\n after.map(|s| OsStr::from_encoded_bytes_unchecked(s)),\n )\n }\n }\n}\n\nfn split_file_at_dot(file: &OsStr) -> (&OsStr, Option<&OsStr>) {\n let slice = file.as_encoded_bytes();\n if slice == b\"..\" {\n return (file, None);\n }\n\n // The unsafety here stems from converting between &OsStr and &[u8]\n // and back. This is safe to do because (1) we only look at ASCII\n // contents of the encoding and (2) new &OsStr values are produced\n // only from ASCII-bounded slices of existing &OsStr values.\n let i = match slice[1..].iter().position(|b| *b == b'.') {\n Some(i) => i + 1,\n None => return (file, None),\n };\n let before = &slice[..i];\n let after = &slice[i + 1..];\n unsafe {\n (\n OsStr::from_encoded_bytes_unchecked(before),\n Some(OsStr::from_encoded_bytes_unchecked(after)),\n )\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// The core iterators\n////////////////////////////////////////////////////////////////////////////////\n\n/// Component parsing works by a double-ended state machine; the cursors at the\n/// front and back of the path each keep track of what parts of the path have\n/// been consumed so far.\n///\n/// Going front to back, a path is made up of a prefix, a starting\n/// directory component, and a body (of normal components)\n#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]\nenum State {\n Prefix = 0, // c:\n StartDir = 1, // / or . or nothing\n Body = 2, // foo/bar/baz\n Done = 3,\n}\n\n/// A structure wrapping a Windows path prefix as well as its unparsed string\n/// representation.\n///\n/// In addition to the parsed [`Prefix`] information returned by [`kind`],\n/// `PrefixComponent` also holds the raw and unparsed [`OsStr`] slice,\n/// returned by [`as_os_str`].\n///\n/// Instances of this `struct` can be obtained by matching against the\n/// [`Prefix` variant] on [`Component`].\n///\n/// Does not occur on Unix.\n///\n/// # Examples\n///\n/// ```\n/// # if cfg!(windows) {\n/// use std::path::{Component, Path, Prefix};\n/// use std::ffi::OsStr;\n///\n/// let path = Path::new(r\"c:\\you\\later\\\");\n/// match path.components().next().unwrap() {\n/// Component::Prefix(prefix_component) => {\n/// assert_eq!(Prefix::Disk(b'C'), prefix_component.kind());\n/// assert_eq!(OsStr::new(\"c:\"), prefix_component.as_os_str());\n/// }\n/// _ => unreachable!(),\n/// }\n/// # }\n/// ```\n///\n/// [`as_os_str`]: PrefixComponent::as_os_str\n/// [`kind`]: PrefixComponent::kind\n/// [`Prefix` variant]: Component::Prefix\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n#[derive(Copy, Clone, Eq, Debug)]\npub struct PrefixComponent<'a> {\n /// The prefix as an unparsed `OsStr` slice.\n raw: &'a OsStr,\n\n /// The parsed prefix data.\n parsed: Prefix<'a>,\n}\n\nimpl<'a> PrefixComponent<'a> {\n /// Returns the parsed prefix data.\n ///\n /// See [`Prefix`]'s documentation for more information on the different\n /// kinds of prefixes.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn kind(&self) -> Prefix<'a> {\n self.parsed\n }\n\n /// Returns the raw [`OsStr`] slice for this prefix.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn as_os_str(&self) -> &'a OsStr {\n self.raw\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> PartialEq for PrefixComponent<'a> {\n #[inline]\n fn eq(&self, other: &PrefixComponent<'a>) -> bool {\n self.parsed == other.parsed\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> PartialOrd for PrefixComponent<'a> {\n #[inline]\n fn partial_cmp(&self, other: &PrefixComponent<'a>) -> Option {\n PartialOrd::partial_cmp(&self.parsed, &other.parsed)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Ord for PrefixComponent<'_> {\n #[inline]\n fn cmp(&self, other: &Self) -> cmp::Ordering {\n Ord::cmp(&self.parsed, &other.parsed)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Hash for PrefixComponent<'_> {\n fn hash(&self, h: &mut H) {\n self.parsed.hash(h);\n }\n}\n\n/// A single component of a path.\n///\n/// A `Component` roughly corresponds to a substring between path separators\n/// (`/` or `\\`).\n///\n/// This `enum` is created by iterating over [`Components`], which in turn is\n/// created by the [`components`](Path::components) method on [`Path`].\n///\n/// # Examples\n///\n/// ```rust\n/// use std::path::{Component, Path};\n///\n/// let path = Path::new(\"/tmp/foo/bar.txt\");\n/// let components = path.components().collect::>();\n/// assert_eq!(&components, &[\n/// Component::RootDir,\n/// Component::Normal(\"tmp\".as_ref()),\n/// Component::Normal(\"foo\".as_ref()),\n/// Component::Normal(\"bar.txt\".as_ref()),\n/// ]);\n/// ```\n#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub enum Component<'a> {\n /// A Windows path prefix, e.g., `C:` or `\\\\server\\share`.\n ///\n /// There is a large variety of prefix types, see [`Prefix`]'s documentation\n /// for more.\n ///\n /// Does not occur on Unix.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n Prefix(#[stable(feature = \"rust1\", since = \"1.0.0\")] PrefixComponent<'a>),\n\n /// The root directory component, appears after any prefix and before anything else.\n ///\n /// It represents a separator that designates that a path starts from root.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n RootDir,\n\n /// A reference to the current directory, i.e., `.`.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n CurDir,\n\n /// A reference to the parent directory, i.e., `..`.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n ParentDir,\n\n /// A normal component, e.g., `a` and `b` in `a/b`.\n ///\n /// This variant is the most common one, it represents references to files\n /// or directories.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n Normal(#[stable(feature = \"rust1\", since = \"1.0.0\")] &'a OsStr),\n}\n\nimpl<'a> Component<'a> {\n /// Extracts the underlying [`OsStr`] slice.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"./tmp/foo/bar.txt\");\n /// let components: Vec<_> = path.components().map(|comp| comp.as_os_str()).collect();\n /// assert_eq!(&components, &[\".\", \"tmp\", \"foo\", \"bar.txt\"]);\n /// ```\n #[must_use = \"`self` will be dropped if the result is not used\"]\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn as_os_str(self) -> &'a OsStr {\n match self {\n Component::Prefix(p) => p.as_os_str(),\n Component::RootDir => OsStr::new(MAIN_SEP_STR),\n Component::CurDir => OsStr::new(\".\"),\n Component::ParentDir => OsStr::new(\"..\"),\n Component::Normal(path) => path,\n }\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Component<'_> {\n #[inline]\n fn as_ref(&self) -> &OsStr {\n self.as_os_str()\n }\n}\n\n#[stable(feature = \"path_component_asref\", since = \"1.25.0\")]\nimpl AsRef for Component<'_> {\n #[inline]\n fn as_ref(&self) -> &Path {\n self.as_os_str().as_ref()\n }\n}\n\n/// An iterator over the [`Component`]s of a [`Path`].\n///\n/// This `struct` is created by the [`components`] method on [`Path`].\n/// See its documentation for more.\n///\n/// # Examples\n///\n/// ```\n/// use std::path::Path;\n///\n/// let path = Path::new(\"/tmp/foo/bar.txt\");\n///\n/// for component in path.components() {\n/// println!(\"{component:?}\");\n/// }\n/// ```\n///\n/// [`components`]: Path::components\n#[derive(Clone)]\n#[must_use = \"iterators are lazy and do nothing unless consumed\"]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub struct Components<'a> {\n // The path left to parse components from\n path: &'a [u8],\n\n // The prefix as it was originally parsed, if any\n prefix: Option>,\n\n // true if path *physically* has a root separator; for most Windows\n // prefixes, it may have a \"logical\" root separator for the purposes of\n // normalization, e.g., \\\\server\\share == \\\\server\\share\\.\n has_physical_root: bool,\n\n // The iterator is double-ended, and these two states keep track of what has\n // been produced from either end\n front: State,\n back: State,\n}\n\n/// An iterator over the [`Component`]s of a [`Path`], as [`OsStr`] slices.\n///\n/// This `struct` is created by the [`iter`] method on [`Path`].\n/// See its documentation for more.\n///\n/// [`iter`]: Path::iter\n#[derive(Clone)]\n#[must_use = \"iterators are lazy and do nothing unless consumed\"]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub struct Iter<'a> {\n inner: Components<'a>,\n}\n\n#[stable(feature = \"path_components_debug\", since = \"1.13.0\")]\nimpl fmt::Debug for Components<'_> {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n struct DebugHelper<'a>(&'a Path);\n\n impl fmt::Debug for DebugHelper<'_> {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_list().entries(self.0.components()).finish()\n }\n }\n\n f.debug_tuple(\"Components\").field(&DebugHelper(self.as_path())).finish()\n }\n}\n\nimpl<'a> Components<'a> {\n // how long is the prefix, if any?\n #[inline]\n fn prefix_len(&self) -> usize {\n self.prefix.as_ref().map(Prefix::len).unwrap_or(0)\n }\n\n #[inline]\n fn prefix_verbatim(&self) -> bool {\n self.prefix.as_ref().map(Prefix::is_verbatim).unwrap_or(false)\n }\n\n /// how much of the prefix is left from the point of view of iteration?\n #[inline]\n fn prefix_remaining(&self) -> usize {\n if self.front == State::Prefix { self.prefix_len() } else { 0 }\n }\n\n // Given the iteration so far, how much of the pre-State::Body path is left?\n #[inline]\n fn len_before_body(&self) -> usize {\n let root = if self.front <= State::StartDir && self.has_physical_root { 1 } else { 0 };\n let cur_dir = if self.front <= State::StartDir && self.include_cur_dir() { 1 } else { 0 };\n self.prefix_remaining() + root + cur_dir\n }\n\n // is the iteration complete?\n #[inline]\n fn finished(&self) -> bool {\n self.front == State::Done || self.back == State::Done || self.front > self.back\n }\n\n #[inline]\n fn is_sep_byte(&self, b: u8) -> bool {\n if self.prefix_verbatim() { is_verbatim_sep(b) } else { is_sep_byte(b) }\n }\n\n /// Extracts a slice corresponding to the portion of the path remaining for iteration.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let mut components = Path::new(\"/tmp/foo/bar.txt\").components();\n /// components.next();\n /// components.next();\n ///\n /// assert_eq!(Path::new(\"foo/bar.txt\"), components.as_path());\n /// ```\n #[must_use]\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn as_path(&self) -> &'a Path {\n let mut comps = self.clone();\n if comps.front == State::Body {\n comps.trim_left();\n }\n if comps.back == State::Body {\n comps.trim_right();\n }\n unsafe { Path::from_u8_slice(comps.path) }\n }\n\n /// Is the *original* path rooted?\n fn has_root(&self) -> bool {\n if self.has_physical_root {\n return true;\n }\n if let Some(p) = self.prefix {\n if p.has_implicit_root() {\n return true;\n }\n }\n false\n }\n\n /// Should the normalized path include a leading . ?\n fn include_cur_dir(&self) -> bool {\n if self.has_root() {\n return false;\n }\n let mut iter = self.path[self.prefix_remaining()..].iter();\n match (iter.next(), iter.next()) {\n (Some(&b'.'), None) => true,\n (Some(&b'.'), Some(&b)) => self.is_sep_byte(b),\n _ => false,\n }\n }\n\n // parse a given byte sequence following the OsStr encoding into the\n // corresponding path component\n unsafe fn parse_single_component<'b>(&self, comp: &'b [u8]) -> Option> {\n match comp {\n b\".\" if self.prefix_verbatim() => Some(Component::CurDir),\n b\".\" => None, // . components are normalized away, except at\n // the beginning of a path, which is treated\n // separately via `include_cur_dir`\n b\"..\" => Some(Component::ParentDir),\n b\"\" => None,\n _ => Some(Component::Normal(unsafe { OsStr::from_encoded_bytes_unchecked(comp) })),\n }\n }\n\n // parse a component from the left, saying how many bytes to consume to\n // remove the component\n fn parse_next_component(&self) -> (usize, Option>) {\n debug_assert!(self.front == State::Body);\n let (extra, comp) = match self.path.iter().position(|b| self.is_sep_byte(*b)) {\n None => (0, self.path),\n Some(i) => (1, &self.path[..i]),\n };\n // SAFETY: `comp` is a valid substring, since it is split on a separator.\n (comp.len() + extra, unsafe { self.parse_single_component(comp) })\n }\n\n // parse a component from the right, saying how many bytes to consume to\n // remove the component\n fn parse_next_component_back(&self) -> (usize, Option>) {\n debug_assert!(self.back == State::Body);\n let start = self.len_before_body();\n let (extra, comp) = match self.path[start..].iter().rposition(|b| self.is_sep_byte(*b)) {\n None => (0, &self.path[start..]),\n Some(i) => (1, &self.path[start + i + 1..]),\n };\n // SAFETY: `comp` is a valid substring, since it is split on a separator.\n (comp.len() + extra, unsafe { self.parse_single_component(comp) })\n }\n\n // trim away repeated separators (i.e., empty components) on the left\n fn trim_left(&mut self) {\n while !self.path.is_empty() {\n let (size, comp) = self.parse_next_component();\n if comp.is_some() {\n return;\n } else {\n self.path = &self.path[size..];\n }\n }\n }\n\n // trim away repeated separators (i.e., empty components) on the right\n fn trim_right(&mut self) {\n while self.path.len() > self.len_before_body() {\n let (size, comp) = self.parse_next_component_back();\n if comp.is_some() {\n return;\n } else {\n self.path = &self.path[..self.path.len() - size];\n }\n }\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Components<'_> {\n #[inline]\n fn as_ref(&self) -> &Path {\n self.as_path()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Components<'_> {\n #[inline]\n fn as_ref(&self) -> &OsStr {\n self.as_path().as_os_str()\n }\n}\n\n#[stable(feature = \"path_iter_debug\", since = \"1.13.0\")]\nimpl fmt::Debug for Iter<'_> {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n struct DebugHelper<'a>(&'a Path);\n\n impl fmt::Debug for DebugHelper<'_> {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n f.debug_list().entries(self.0.iter()).finish()\n }\n }\n\n f.debug_tuple(\"Iter\").field(&DebugHelper(self.as_path())).finish()\n }\n}\n\nimpl<'a> Iter<'a> {\n /// Extracts a slice corresponding to the portion of the path remaining for iteration.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let mut iter = Path::new(\"/tmp/foo/bar.txt\").iter();\n /// iter.next();\n /// iter.next();\n ///\n /// assert_eq!(Path::new(\"foo/bar.txt\"), iter.as_path());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn as_path(&self) -> &'a Path {\n self.inner.as_path()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Iter<'_> {\n #[inline]\n fn as_ref(&self) -> &Path {\n self.as_path()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Iter<'_> {\n #[inline]\n fn as_ref(&self) -> &OsStr {\n self.as_path().as_os_str()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> Iterator for Iter<'a> {\n type Item = &'a OsStr;\n\n #[inline]\n fn next(&mut self) -> Option<&'a OsStr> {\n self.inner.next().map(Component::as_os_str)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> DoubleEndedIterator for Iter<'a> {\n #[inline]\n fn next_back(&mut self) -> Option<&'a OsStr> {\n self.inner.next_back().map(Component::as_os_str)\n }\n}\n\n#[stable(feature = \"fused\", since = \"1.26.0\")]\nimpl FusedIterator for Iter<'_> {}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> Iterator for Components<'a> {\n type Item = Component<'a>;\n\n fn next(&mut self) -> Option> {\n while !self.finished() {\n match self.front {\n State::Prefix if self.prefix_len() > 0 => {\n self.front = State::StartDir;\n debug_assert!(self.prefix_len() <= self.path.len());\n let raw = &self.path[..self.prefix_len()];\n self.path = &self.path[self.prefix_len()..];\n return Some(Component::Prefix(PrefixComponent {\n raw: unsafe { OsStr::from_encoded_bytes_unchecked(raw) },\n parsed: self.prefix.unwrap(),\n }));\n }\n State::Prefix => {\n self.front = State::StartDir;\n }\n State::StartDir => {\n self.front = State::Body;\n if self.has_physical_root {\n debug_assert!(!self.path.is_empty());\n self.path = &self.path[1..];\n return Some(Component::RootDir);\n } else if let Some(p) = self.prefix {\n if p.has_implicit_root() && !p.is_verbatim() {\n return Some(Component::RootDir);\n }\n } else if self.include_cur_dir() {\n debug_assert!(!self.path.is_empty());\n self.path = &self.path[1..];\n return Some(Component::CurDir);\n }\n }\n State::Body if !self.path.is_empty() => {\n let (size, comp) = self.parse_next_component();\n self.path = &self.path[size..];\n if comp.is_some() {\n return comp;\n }\n }\n State::Body => {\n self.front = State::Done;\n }\n State::Done => unreachable!(),\n }\n }\n None\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> DoubleEndedIterator for Components<'a> {\n fn next_back(&mut self) -> Option> {\n while !self.finished() {\n match self.back {\n State::Body if self.path.len() > self.len_before_body() => {\n let (size, comp) = self.parse_next_component_back();\n self.path = &self.path[..self.path.len() - size];\n if comp.is_some() {\n return comp;\n }\n }\n State::Body => {\n self.back = State::StartDir;\n }\n State::StartDir => {\n self.back = State::Prefix;\n if self.has_physical_root {\n self.path = &self.path[..self.path.len() - 1];\n return Some(Component::RootDir);\n } else if let Some(p) = self.prefix {\n if p.has_implicit_root() && !p.is_verbatim() {\n return Some(Component::RootDir);\n }\n } else if self.include_cur_dir() {\n self.path = &self.path[..self.path.len() - 1];\n return Some(Component::CurDir);\n }\n }\n State::Prefix if self.prefix_len() > 0 => {\n self.back = State::Done;\n return Some(Component::Prefix(PrefixComponent {\n raw: unsafe { OsStr::from_encoded_bytes_unchecked(self.path) },\n parsed: self.prefix.unwrap(),\n }));\n }\n State::Prefix => {\n self.back = State::Done;\n return None;\n }\n State::Done => unreachable!(),\n }\n }\n None\n }\n}\n\n#[stable(feature = \"fused\", since = \"1.26.0\")]\nimpl FusedIterator for Components<'_> {}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> PartialEq for Components<'a> {\n #[inline]\n fn eq(&self, other: &Components<'a>) -> bool {\n let Components { path: _, front: _, back: _, has_physical_root: _, prefix: _ } = self;\n\n // Fast path for exact matches, e.g. for hashmap lookups.\n // Don't explicitly compare the prefix or has_physical_root fields since they'll\n // either be covered by the `path` buffer or are only relevant for `prefix_verbatim()`.\n if self.path.len() == other.path.len()\n && self.front == other.front\n && self.back == State::Body\n && other.back == State::Body\n && self.prefix_verbatim() == other.prefix_verbatim()\n {\n // possible future improvement: this could bail out earlier if there were a\n // reverse memcmp/bcmp comparing back to front\n if self.path == other.path {\n return true;\n }\n }\n\n // compare back to front since absolute paths often share long prefixes\n Iterator::eq(self.clone().rev(), other.clone().rev())\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Eq for Components<'_> {}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl<'a> PartialOrd for Components<'a> {\n #[inline]\n fn partial_cmp(&self, other: &Components<'a>) -> Option {\n Some(compare_components(self.clone(), other.clone()))\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Ord for Components<'_> {\n #[inline]\n fn cmp(&self, other: &Self) -> cmp::Ordering {\n compare_components(self.clone(), other.clone())\n }\n}\n\nfn compare_components(mut left: Components<'_>, mut right: Components<'_>) -> cmp::Ordering {\n // Fast path for long shared prefixes\n //\n // - compare raw bytes to find first mismatch\n // - backtrack to find separator before mismatch to avoid ambiguous parsings of '.' or '..' characters\n // - if found update state to only do a component-wise comparison on the remainder,\n // otherwise do it on the full path\n //\n // The fast path isn't taken for paths with a PrefixComponent to avoid backtracking into\n // the middle of one\n if left.prefix.is_none() && right.prefix.is_none() && left.front == right.front {\n // possible future improvement: a [u8]::first_mismatch simd implementation\n let first_difference = match left.path.iter().zip(right.path).position(|(&a, &b)| a != b) {\n None if left.path.len() == right.path.len() => return cmp::Ordering::Equal,\n None => left.path.len().min(right.path.len()),\n Some(diff) => diff,\n };\n\n if let Some(previous_sep) =\n left.path[..first_difference].iter().rposition(|&b| left.is_sep_byte(b))\n {\n let mismatched_component_start = previous_sep + 1;\n left.path = &left.path[mismatched_component_start..];\n left.front = State::Body;\n right.path = &right.path[mismatched_component_start..];\n right.front = State::Body;\n }\n }\n\n Iterator::cmp(left, right)\n}\n\n/// An iterator over [`Path`] and its ancestors.\n///\n/// This `struct` is created by the [`ancestors`] method on [`Path`].\n/// See its documentation for more.\n///\n/// # Examples\n///\n/// ```\n/// use std::path::Path;\n///\n/// let path = Path::new(\"/foo/bar\");\n///\n/// for ancestor in path.ancestors() {\n/// println!(\"{}\", ancestor.display());\n/// }\n/// ```\n///\n/// [`ancestors`]: Path::ancestors\n#[derive(Copy, Clone, Debug)]\n#[must_use = \"iterators are lazy and do nothing unless consumed\"]\n#[stable(feature = \"path_ancestors\", since = \"1.28.0\")]\npub struct Ancestors<'a> {\n next: Option<&'a Path>,\n}\n\n#[stable(feature = \"path_ancestors\", since = \"1.28.0\")]\nimpl<'a> Iterator for Ancestors<'a> {\n type Item = &'a Path;\n\n #[inline]\n fn next(&mut self) -> Option {\n let next = self.next;\n self.next = next.and_then(Path::parent);\n next\n }\n}\n\n#[stable(feature = \"path_ancestors\", since = \"1.28.0\")]\nimpl FusedIterator for Ancestors<'_> {}\n\n////////////////////////////////////////////////////////////////////////////////\n// Basic types and traits\n////////////////////////////////////////////////////////////////////////////////\n\n/// An owned, mutable path (akin to [`String`]).\n///\n/// This type provides methods like [`push`] and [`set_extension`] that mutate\n/// the path in place. It also implements [`Deref`] to [`Path`], meaning that\n/// all methods on [`Path`] slices are available on `PathBuf` values as well.\n///\n/// [`push`]: PathBuf::push\n/// [`set_extension`]: PathBuf::set_extension\n///\n/// More details about the overall approach can be found in\n/// the [module documentation](self).\n///\n/// # Examples\n///\n/// You can use [`push`] to build up a `PathBuf` from\n/// components:\n///\n/// ```\n/// use std::path::PathBuf;\n///\n/// let mut path = PathBuf::new();\n///\n/// path.push(r\"C:\\\");\n/// path.push(\"windows\");\n/// path.push(\"system32\");\n///\n/// path.set_extension(\"dll\");\n/// ```\n///\n/// However, [`push`] is best used for dynamic situations. This is a better way\n/// to do this when you know all of the components ahead of time:\n///\n/// ```\n/// use std::path::PathBuf;\n///\n/// let path: PathBuf = [r\"C:\\\", \"windows\", \"system32.dll\"].iter().collect();\n/// ```\n///\n/// We can still do better than this! Since these are all strings, we can use\n/// `From::from`:\n///\n/// ```\n/// use std::path::PathBuf;\n///\n/// let path = PathBuf::from(r\"C:\\windows\\system32.dll\");\n/// ```\n///\n/// Which method works best depends on what kind of situation you're in.\n#[cfg_attr(not(test), rustc_diagnostic_item = \"PathBuf\")]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n// `PathBuf::as_mut_vec` current implementation relies\n// on `PathBuf` being layout-compatible with `Vec`.\n// However, `PathBuf` layout is considered an implementation detail and must not be relied upon. We\n// want `repr(transparent)` but we don't want it to show up in rustdoc, so we hide it under\n// `cfg(doc)`. This is an ad-hoc implementation of attribute privacy.\n#[cfg_attr(not(doc), repr(transparent))]\npub struct PathBuf {\n inner: OsString,\n}\n\nimpl PathBuf {\n #[inline]\n fn as_mut_vec(&mut self) -> &mut Vec {\n unsafe { &mut *(self as *mut PathBuf as *mut Vec) }\n }\n\n /// Allocates an empty `PathBuf`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::PathBuf;\n ///\n /// let path = PathBuf::new();\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn new() -> PathBuf {\n PathBuf { inner: OsString::new() }\n }\n\n /// Creates a new `PathBuf` with a given capacity used to create the\n /// internal [`OsString`]. See [`with_capacity`] defined on [`OsString`].\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::PathBuf;\n ///\n /// let mut path = PathBuf::with_capacity(10);\n /// let capacity = path.capacity();\n ///\n /// // This push is done without reallocating\n /// path.push(r\"C:\\\");\n ///\n /// assert_eq!(capacity, path.capacity());\n /// ```\n ///\n /// [`with_capacity`]: OsString::with_capacity\n #[stable(feature = \"path_buf_capacity\", since = \"1.44.0\")]\n #[must_use]\n #[inline]\n pub fn with_capacity(capacity: usize) -> PathBuf {\n PathBuf { inner: OsString::with_capacity(capacity) }\n }\n\n /// Coerces to a [`Path`] slice.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let p = PathBuf::from(\"/test\");\n /// assert_eq!(Path::new(\"/test\"), p.as_path());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn as_path(&self) -> &Path {\n self\n }\n\n /// Extends `self` with `path`.\n ///\n /// If `path` is absolute, it replaces the current path.\n ///\n /// On Windows:\n ///\n /// * if `path` has a root but no prefix (e.g., `\\windows`), it\n /// replaces everything except for the prefix (if any) of `self`.\n /// * if `path` has a prefix but no root, it replaces `self`.\n /// * if `self` has a verbatim prefix (e.g. `\\\\?\\C:\\windows`)\n /// and `path` is not empty, the new path is normalized: all references\n /// to `.` and `..` are removed.\n ///\n /// Consider using [`Path::join`] if you need a new `PathBuf` instead of\n /// using this function on a cloned `PathBuf`.\n ///\n /// # Examples\n ///\n /// Pushing a relative path extends the existing path:\n ///\n /// ```\n /// use std::path::PathBuf;\n ///\n /// let mut path = PathBuf::from(\"/tmp\");\n /// path.push(\"file.bk\");\n /// assert_eq!(path, PathBuf::from(\"/tmp/file.bk\"));\n /// ```\n ///\n /// Pushing an absolute path replaces the existing path:\n ///\n /// ```\n /// use std::path::PathBuf;\n ///\n /// let mut path = PathBuf::from(\"/tmp\");\n /// path.push(\"/etc\");\n /// assert_eq!(path, PathBuf::from(\"/etc\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn push>(&mut self, path: P) {\n self._push(path.as_ref())\n }\n\n fn _push(&mut self, path: &Path) {\n // in general, a separator is needed if the rightmost byte is not a separator\n let mut need_sep = self.as_mut_vec().last().map(|c| !is_sep_byte(*c)).unwrap_or(false);\n\n // in the special case of `C:` on Windows, do *not* add a separator\n let comps = self.components();\n\n if comps.prefix_len() > 0\n && comps.prefix_len() == comps.path.len()\n && comps.prefix.unwrap().is_drive()\n {\n need_sep = false\n }\n\n // absolute `path` replaces `self`\n if path.is_absolute() || path.prefix().is_some() {\n self.as_mut_vec().truncate(0);\n\n // verbatim paths need . and .. removed\n } else if comps.prefix_verbatim() && !path.inner.is_empty() {\n let mut buf: Vec<_> = comps.collect();\n for c in path.components() {\n match c {\n Component::RootDir => {\n buf.truncate(1);\n buf.push(c);\n }\n Component::CurDir => (),\n Component::ParentDir => {\n if let Some(Component::Normal(_)) = buf.last() {\n buf.pop();\n }\n }\n _ => buf.push(c),\n }\n }\n\n let mut res = OsString::new();\n let mut need_sep = false;\n\n for c in buf {\n if need_sep && c != Component::RootDir {\n res.push(MAIN_SEP_STR);\n }\n res.push(c.as_os_str());\n\n need_sep = match c {\n Component::RootDir => false,\n Component::Prefix(prefix) => {\n !prefix.parsed.is_drive() && prefix.parsed.len() > 0\n }\n _ => true,\n }\n }\n\n self.inner = res;\n return;\n\n // `path` has a root but no prefix, e.g., `\\windows` (Windows only)\n } else if path.has_root() {\n let prefix_len = self.components().prefix_remaining();\n self.as_mut_vec().truncate(prefix_len);\n\n // `path` is a pure relative path\n } else if need_sep {\n self.inner.push(MAIN_SEP_STR);\n }\n\n self.inner.push(path);\n }\n\n /// Truncates `self` to [`self.parent`].\n ///\n /// Returns `false` and does nothing if [`self.parent`] is [`None`].\n /// Otherwise, returns `true`.\n ///\n /// [`self.parent`]: Path::parent\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let mut p = PathBuf::from(\"/spirited/away.rs\");\n ///\n /// p.pop();\n /// assert_eq!(Path::new(\"/spirited\"), p);\n /// p.pop();\n /// assert_eq!(Path::new(\"/\"), p);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn pop(&mut self) -> bool {\n match self.parent().map(|p| p.as_u8_slice().len()) {\n Some(len) => {\n self.as_mut_vec().truncate(len);\n true\n }\n None => false,\n }\n }\n\n /// Updates [`self.file_name`] to `file_name`.\n ///\n /// If [`self.file_name`] was [`None`], this is equivalent to pushing\n /// `file_name`.\n ///\n /// Otherwise it is equivalent to calling [`pop`] and then pushing\n /// `file_name`. The new path will be a sibling of the original path.\n /// (That is, it will have the same parent.)\n ///\n /// [`self.file_name`]: Path::file_name\n /// [`pop`]: PathBuf::pop\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::PathBuf;\n ///\n /// let mut buf = PathBuf::from(\"/\");\n /// assert!(buf.file_name() == None);\n ///\n /// buf.set_file_name(\"foo.txt\");\n /// assert!(buf == PathBuf::from(\"/foo.txt\"));\n /// assert!(buf.file_name().is_some());\n ///\n /// buf.set_file_name(\"bar.txt\");\n /// assert!(buf == PathBuf::from(\"/bar.txt\"));\n ///\n /// buf.set_file_name(\"baz\");\n /// assert!(buf == PathBuf::from(\"/baz\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn set_file_name>(&mut self, file_name: S) {\n self._set_file_name(file_name.as_ref())\n }\n\n fn _set_file_name(&mut self, file_name: &OsStr) {\n if self.file_name().is_some() {\n let popped = self.pop();\n debug_assert!(popped);\n }\n self.push(file_name);\n }\n\n /// Updates [`self.extension`] to `Some(extension)` or to `None` if\n /// `extension` is empty.\n ///\n /// Returns `false` and does nothing if [`self.file_name`] is [`None`],\n /// returns `true` and updates the extension otherwise.\n ///\n /// If [`self.extension`] is [`None`], the extension is added; otherwise\n /// it is replaced.\n ///\n /// If `extension` is the empty string, [`self.extension`] will be [`None`]\n /// afterwards, not `Some(\"\")`.\n ///\n /// # Caveats\n ///\n /// The new `extension` may contain dots and will be used in its entirety,\n /// but only the part after the final dot will be reflected in\n /// [`self.extension`].\n ///\n /// If the file stem contains internal dots and `extension` is empty, part\n /// of the old file stem will be considered the new [`self.extension`].\n ///\n /// See the examples below.\n ///\n /// [`self.file_name`]: Path::file_name\n /// [`self.extension`]: Path::extension\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let mut p = PathBuf::from(\"/feel/the\");\n ///\n /// p.set_extension(\"force\");\n /// assert_eq!(Path::new(\"/feel/the.force\"), p.as_path());\n ///\n /// p.set_extension(\"dark.side\");\n /// assert_eq!(Path::new(\"/feel/the.dark.side\"), p.as_path());\n ///\n /// p.set_extension(\"cookie\");\n /// assert_eq!(Path::new(\"/feel/the.dark.cookie\"), p.as_path());\n ///\n /// p.set_extension(\"\");\n /// assert_eq!(Path::new(\"/feel/the.dark\"), p.as_path());\n ///\n /// p.set_extension(\"\");\n /// assert_eq!(Path::new(\"/feel/the\"), p.as_path());\n ///\n /// p.set_extension(\"\");\n /// assert_eq!(Path::new(\"/feel/the\"), p.as_path());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn set_extension>(&mut self, extension: S) -> bool {\n self._set_extension(extension.as_ref())\n }\n\n fn _set_extension(&mut self, extension: &OsStr) -> bool {\n let file_stem = match self.file_stem() {\n None => return false,\n Some(f) => f.as_encoded_bytes(),\n };\n\n // truncate until right after the file stem\n let end_file_stem = file_stem[file_stem.len()..].as_ptr().addr();\n let start = self.inner.as_encoded_bytes().as_ptr().addr();\n let v = self.as_mut_vec();\n v.truncate(end_file_stem.wrapping_sub(start));\n\n // add the new extension, if any\n let new = extension.as_encoded_bytes();\n if !new.is_empty() {\n v.reserve_exact(new.len() + 1);\n v.push(b'.');\n v.extend_from_slice(new);\n }\n\n true\n }\n\n /// Yields a mutable reference to the underlying [`OsString`] instance.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let mut path = PathBuf::from(\"/foo\");\n ///\n /// path.push(\"bar\");\n /// assert_eq!(path, Path::new(\"/foo/bar\"));\n ///\n /// // OsString's `push` does not add a separator.\n /// path.as_mut_os_string().push(\"baz\");\n /// assert_eq!(path, Path::new(\"/foo/barbaz\"));\n /// ```\n #[stable(feature = \"path_as_mut_os_str\", since = \"1.70.0\")]\n #[must_use]\n #[inline]\n pub fn as_mut_os_string(&mut self) -> &mut OsString {\n &mut self.inner\n }\n\n /// Consumes the `PathBuf`, yielding its internal [`OsString`] storage.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::PathBuf;\n ///\n /// let p = PathBuf::from(\"/the/head\");\n /// let os_str = p.into_os_string();\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use = \"`self` will be dropped if the result is not used\"]\n #[inline]\n pub fn into_os_string(self) -> OsString {\n self.inner\n }\n\n /// Converts this `PathBuf` into a [boxed](Box) [`Path`].\n #[stable(feature = \"into_boxed_path\", since = \"1.20.0\")]\n #[must_use = \"`self` will be dropped if the result is not used\"]\n #[inline]\n pub fn into_boxed_path(self) -> Box {\n let rw = Box::into_raw(self.inner.into_boxed_os_str()) as *mut Path;\n unsafe { Box::from_raw(rw) }\n }\n\n /// Invokes [`capacity`] on the underlying instance of [`OsString`].\n ///\n /// [`capacity`]: OsString::capacity\n #[stable(feature = \"path_buf_capacity\", since = \"1.44.0\")]\n #[must_use]\n #[inline]\n pub fn capacity(&self) -> usize {\n self.inner.capacity()\n }\n\n /// Invokes [`clear`] on the underlying instance of [`OsString`].\n ///\n /// [`clear`]: OsString::clear\n #[stable(feature = \"path_buf_capacity\", since = \"1.44.0\")]\n #[inline]\n pub fn clear(&mut self) {\n self.inner.clear()\n }\n\n /// Invokes [`reserve`] on the underlying instance of [`OsString`].\n ///\n /// [`reserve`]: OsString::reserve\n #[stable(feature = \"path_buf_capacity\", since = \"1.44.0\")]\n #[inline]\n pub fn reserve(&mut self, additional: usize) {\n self.inner.reserve(additional)\n }\n\n /// Invokes [`try_reserve`] on the underlying instance of [`OsString`].\n ///\n /// [`try_reserve`]: OsString::try_reserve\n #[stable(feature = \"try_reserve_2\", since = \"1.63.0\")]\n #[inline]\n pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> {\n self.inner.try_reserve(additional)\n }\n\n /// Invokes [`reserve_exact`] on the underlying instance of [`OsString`].\n ///\n /// [`reserve_exact`]: OsString::reserve_exact\n #[stable(feature = \"path_buf_capacity\", since = \"1.44.0\")]\n #[inline]\n pub fn reserve_exact(&mut self, additional: usize) {\n self.inner.reserve_exact(additional)\n }\n\n /// Invokes [`try_reserve_exact`] on the underlying instance of [`OsString`].\n ///\n /// [`try_reserve_exact`]: OsString::try_reserve_exact\n #[stable(feature = \"try_reserve_2\", since = \"1.63.0\")]\n #[inline]\n pub fn try_reserve_exact(&mut self, additional: usize) -> Result<(), TryReserveError> {\n self.inner.try_reserve_exact(additional)\n }\n\n /// Invokes [`shrink_to_fit`] on the underlying instance of [`OsString`].\n ///\n /// [`shrink_to_fit`]: OsString::shrink_to_fit\n #[stable(feature = \"path_buf_capacity\", since = \"1.44.0\")]\n #[inline]\n pub fn shrink_to_fit(&mut self) {\n self.inner.shrink_to_fit()\n }\n\n /// Invokes [`shrink_to`] on the underlying instance of [`OsString`].\n ///\n /// [`shrink_to`]: OsString::shrink_to\n #[stable(feature = \"shrink_to\", since = \"1.56.0\")]\n #[inline]\n pub fn shrink_to(&mut self, min_capacity: usize) {\n self.inner.shrink_to(min_capacity)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Clone for PathBuf {\n #[inline]\n fn clone(&self) -> Self {\n PathBuf { inner: self.inner.clone() }\n }\n\n #[inline]\n fn clone_from(&mut self, source: &Self) {\n self.inner.clone_from(&source.inner)\n }\n}\n\n#[stable(feature = \"box_from_path\", since = \"1.17.0\")]\nimpl From<&Path> for Box {\n /// Creates a boxed [`Path`] from a reference.\n ///\n /// This will allocate and clone `path` to it.\n fn from(path: &Path) -> Box {\n let boxed: Box = path.inner.into();\n let rw = Box::into_raw(boxed) as *mut Path;\n unsafe { Box::from_raw(rw) }\n }\n}\n\n#[stable(feature = \"box_from_cow\", since = \"1.45.0\")]\nimpl From> for Box {\n /// Creates a boxed [`Path`] from a clone-on-write pointer.\n ///\n /// Converting from a `Cow::Owned` does not clone or allocate.\n #[inline]\n fn from(cow: Cow<'_, Path>) -> Box {\n match cow {\n Cow::Borrowed(path) => Box::from(path),\n Cow::Owned(path) => Box::from(path),\n }\n }\n}\n\n#[stable(feature = \"path_buf_from_box\", since = \"1.18.0\")]\nimpl From> for PathBuf {\n /// Converts a [Box]<[Path]> into a [`PathBuf`].\n ///\n /// This conversion does not allocate or copy memory.\n #[inline]\n fn from(boxed: Box) -> PathBuf {\n boxed.into_path_buf()\n }\n}\n\n#[stable(feature = \"box_from_path_buf\", since = \"1.20.0\")]\nimpl From for Box {\n /// Converts a [`PathBuf`] into a [Box]<[Path]>.\n ///\n /// This conversion currently should not allocate memory,\n /// but this behavior is not guaranteed on all platforms or in all future versions.\n #[inline]\n fn from(p: PathBuf) -> Box {\n p.into_boxed_path()\n }\n}\n\n#[stable(feature = \"more_box_slice_clone\", since = \"1.29.0\")]\nimpl Clone for Box {\n #[inline]\n fn clone(&self) -> Self {\n self.to_path_buf().into_boxed_path()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl> From<&T> for PathBuf {\n /// Converts a borrowed [`OsStr`] to a [`PathBuf`].\n ///\n /// Allocates a [`PathBuf`] and copies the data into it.\n #[inline]\n fn from(s: &T) -> PathBuf {\n PathBuf::from(s.as_ref().to_os_string())\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl From for PathBuf {\n /// Converts an [`OsString`] into a [`PathBuf`]\n ///\n /// This conversion does not allocate or copy memory.\n #[inline]\n fn from(s: OsString) -> PathBuf {\n PathBuf { inner: s }\n }\n}\n\n#[stable(feature = \"from_path_buf_for_os_string\", since = \"1.14.0\")]\nimpl From for OsString {\n /// Converts a [`PathBuf`] into an [`OsString`]\n ///\n /// This conversion does not allocate or copy memory.\n #[inline]\n fn from(path_buf: PathBuf) -> OsString {\n path_buf.inner\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl From for PathBuf {\n /// Converts a [`String`] into a [`PathBuf`]\n ///\n /// This conversion does not allocate or copy memory.\n #[inline]\n fn from(s: String) -> PathBuf {\n PathBuf::from(OsString::from(s))\n }\n}\n\n#[stable(feature = \"path_from_str\", since = \"1.32.0\")]\nimpl FromStr for PathBuf {\n type Err = core::convert::Infallible;\n\n #[inline]\n fn from_str(s: &str) -> Result {\n Ok(PathBuf::from(s))\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl> FromIterator

for PathBuf {\n fn from_iter>(iter: I) -> PathBuf {\n let mut buf = PathBuf::new();\n buf.extend(iter);\n buf\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl> Extend

for PathBuf {\n fn extend>(&mut self, iter: I) {\n iter.into_iter().for_each(move |p| self.push(p.as_ref()));\n }\n\n #[inline]\n fn extend_one(&mut self, p: P) {\n self.push(p.as_ref());\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl fmt::Debug for PathBuf {\n fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {\n fmt::Debug::fmt(&**self, formatter)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl ops::Deref for PathBuf {\n type Target = Path;\n #[inline]\n fn deref(&self) -> &Path {\n Path::new(&self.inner)\n }\n}\n\n#[stable(feature = \"path_buf_deref_mut\", since = \"1.68.0\")]\nimpl ops::DerefMut for PathBuf {\n #[inline]\n fn deref_mut(&mut self) -> &mut Path {\n Path::from_inner_mut(&mut self.inner)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Borrow for PathBuf {\n #[inline]\n fn borrow(&self) -> &Path {\n self.deref()\n }\n}\n\n#[stable(feature = \"default_for_pathbuf\", since = \"1.17.0\")]\nimpl Default for PathBuf {\n #[inline]\n fn default() -> Self {\n PathBuf::new()\n }\n}\n\n#[stable(feature = \"cow_from_path\", since = \"1.6.0\")]\nimpl<'a> From<&'a Path> for Cow<'a, Path> {\n /// Creates a clone-on-write pointer from a reference to\n /// [`Path`].\n ///\n /// This conversion does not clone or allocate.\n #[inline]\n fn from(s: &'a Path) -> Cow<'a, Path> {\n Cow::Borrowed(s)\n }\n}\n\n#[stable(feature = \"cow_from_path\", since = \"1.6.0\")]\nimpl<'a> From for Cow<'a, Path> {\n /// Creates a clone-on-write pointer from an owned\n /// instance of [`PathBuf`].\n ///\n /// This conversion does not clone or allocate.\n #[inline]\n fn from(s: PathBuf) -> Cow<'a, Path> {\n Cow::Owned(s)\n }\n}\n\n#[stable(feature = \"cow_from_pathbuf_ref\", since = \"1.28.0\")]\nimpl<'a> From<&'a PathBuf> for Cow<'a, Path> {\n /// Creates a clone-on-write pointer from a reference to\n /// [`PathBuf`].\n ///\n /// This conversion does not clone or allocate.\n #[inline]\n fn from(p: &'a PathBuf) -> Cow<'a, Path> {\n Cow::Borrowed(p.as_path())\n }\n}\n\n#[stable(feature = \"pathbuf_from_cow_path\", since = \"1.28.0\")]\nimpl<'a> From> for PathBuf {\n /// Converts a clone-on-write pointer to an owned path.\n ///\n /// Converting from a `Cow::Owned` does not clone or allocate.\n #[inline]\n fn from(p: Cow<'a, Path>) -> Self {\n p.into_owned()\n }\n}\n\n#[stable(feature = \"shared_from_slice2\", since = \"1.24.0\")]\nimpl From for Arc {\n /// Converts a [`PathBuf`] into an [Arc]<[Path]> by moving the [`PathBuf`] data\n /// into a new [`Arc`] buffer.\n #[inline]\n fn from(s: PathBuf) -> Arc {\n let arc: Arc = Arc::from(s.into_os_string());\n unsafe { Arc::from_raw(Arc::into_raw(arc) as *const Path) }\n }\n}\n\n#[stable(feature = \"shared_from_slice2\", since = \"1.24.0\")]\nimpl From<&Path> for Arc {\n /// Converts a [`Path`] into an [`Arc`] by copying the [`Path`] data into a new [`Arc`] buffer.\n #[inline]\n fn from(s: &Path) -> Arc {\n let arc: Arc = Arc::from(s.as_os_str());\n unsafe { Arc::from_raw(Arc::into_raw(arc) as *const Path) }\n }\n}\n\n#[stable(feature = \"shared_from_slice2\", since = \"1.24.0\")]\nimpl From for Rc {\n /// Converts a [`PathBuf`] into an [Rc]<[Path]> by moving the [`PathBuf`] data into\n /// a new [`Rc`] buffer.\n #[inline]\n fn from(s: PathBuf) -> Rc {\n let rc: Rc = Rc::from(s.into_os_string());\n unsafe { Rc::from_raw(Rc::into_raw(rc) as *const Path) }\n }\n}\n\n#[stable(feature = \"shared_from_slice2\", since = \"1.24.0\")]\nimpl From<&Path> for Rc {\n /// Converts a [`Path`] into an [`Rc`] by copying the [`Path`] data into a new [`Rc`] buffer.\n #[inline]\n fn from(s: &Path) -> Rc {\n let rc: Rc = Rc::from(s.as_os_str());\n unsafe { Rc::from_raw(Rc::into_raw(rc) as *const Path) }\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl ToOwned for Path {\n type Owned = PathBuf;\n #[inline]\n fn to_owned(&self) -> PathBuf {\n self.to_path_buf()\n }\n #[inline]\n fn clone_into(&self, target: &mut PathBuf) {\n self.inner.clone_into(&mut target.inner);\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl PartialEq for PathBuf {\n #[inline]\n fn eq(&self, other: &PathBuf) -> bool {\n self.components() == other.components()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Hash for PathBuf {\n fn hash(&self, h: &mut H) {\n self.as_path().hash(h)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Eq for PathBuf {}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl PartialOrd for PathBuf {\n #[inline]\n fn partial_cmp(&self, other: &PathBuf) -> Option {\n Some(compare_components(self.components(), other.components()))\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Ord for PathBuf {\n #[inline]\n fn cmp(&self, other: &PathBuf) -> cmp::Ordering {\n compare_components(self.components(), other.components())\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for PathBuf {\n #[inline]\n fn as_ref(&self) -> &OsStr {\n &self.inner[..]\n }\n}\n\n/// A slice of a path (akin to [`str`]).\n///\n/// This type supports a number of operations for inspecting a path, including\n/// breaking the path into its components (separated by `/` on Unix and by either\n/// `/` or `\\` on Windows), extracting the file name, determining whether the path\n/// is absolute, and so on.\n///\n/// This is an *unsized* type, meaning that it must always be used behind a\n/// pointer like `&` or [`Box`]. For an owned version of this type,\n/// see [`PathBuf`].\n///\n/// More details about the overall approach can be found in\n/// the [module documentation](self).\n///\n/// # Examples\n///\n/// ```\n/// use std::path::Path;\n/// use std::ffi::OsStr;\n///\n/// // Note: this example does work on Windows\n/// let path = Path::new(\"./foo/bar.txt\");\n///\n/// let parent = path.parent();\n/// assert_eq!(parent, Some(Path::new(\"./foo\")));\n///\n/// let file_stem = path.file_stem();\n/// assert_eq!(file_stem, Some(OsStr::new(\"bar\")));\n///\n/// let extension = path.extension();\n/// assert_eq!(extension, Some(OsStr::new(\"txt\")));\n/// ```\n#[cfg_attr(not(test), rustc_diagnostic_item = \"Path\")]\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\n// `Path::new` current implementation relies\n// on `Path` being layout-compatible with `OsStr`.\n// However, `Path` layout is considered an implementation detail and must not be relied upon. We\n// want `repr(transparent)` but we don't want it to show up in rustdoc, so we hide it under\n// `cfg(doc)`. This is an ad-hoc implementation of attribute privacy.\n#[cfg_attr(not(doc), repr(transparent))]\npub struct Path {\n inner: OsStr,\n}\n\n/// An error returned from [`Path::strip_prefix`] if the prefix was not found.\n///\n/// This `struct` is created by the [`strip_prefix`] method on [`Path`].\n/// See its documentation for more.\n///\n/// [`strip_prefix`]: Path::strip_prefix\n#[derive(Debug, Clone, PartialEq, Eq)]\n#[stable(since = \"1.7.0\", feature = \"strip_prefix\")]\npub struct StripPrefixError(());\n\nimpl Path {\n // The following (private!) function allows construction of a path from a u8\n // slice, which is only safe when it is known to follow the OsStr encoding.\n unsafe fn from_u8_slice(s: &[u8]) -> &Path {\n unsafe { Path::new(OsStr::from_encoded_bytes_unchecked(s)) }\n }\n // The following (private!) function reveals the byte encoding used for OsStr.\n fn as_u8_slice(&self) -> &[u8] {\n self.inner.as_encoded_bytes()\n }\n\n /// Directly wraps a string slice as a `Path` slice.\n ///\n /// This is a cost-free conversion.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// Path::new(\"foo.txt\");\n /// ```\n ///\n /// You can create `Path`s from `String`s, or even other `Path`s:\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let string = String::from(\"foo.txt\");\n /// let from_string = Path::new(&string);\n /// let from_path = Path::new(&from_string);\n /// assert_eq!(from_string, from_path);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn new + ?Sized>(s: &S) -> &Path {\n unsafe { &*(s.as_ref() as *const OsStr as *const Path) }\n }\n\n fn from_inner_mut(inner: &mut OsStr) -> &mut Path {\n // SAFETY: Path is just a wrapper around OsStr,\n // therefore converting &mut OsStr to &mut Path is safe.\n unsafe { &mut *(inner as *mut OsStr as *mut Path) }\n }\n\n /// Yields the underlying [`OsStr`] slice.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let os_str = Path::new(\"foo.txt\").as_os_str();\n /// assert_eq!(os_str, std::ffi::OsStr::new(\"foo.txt\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn as_os_str(&self) -> &OsStr {\n &self.inner\n }\n\n /// Yields a mutable reference to the underlying [`OsStr`] slice.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let mut path = PathBuf::from(\"Foo.TXT\");\n ///\n /// assert_ne!(path, Path::new(\"foo.txt\"));\n ///\n /// path.as_mut_os_str().make_ascii_lowercase();\n /// assert_eq!(path, Path::new(\"foo.txt\"));\n /// ```\n #[stable(feature = \"path_as_mut_os_str\", since = \"1.70.0\")]\n #[must_use]\n #[inline]\n pub fn as_mut_os_str(&mut self) -> &mut OsStr {\n &mut self.inner\n }\n\n /// Yields a [`&str`] slice if the `Path` is valid unicode.\n ///\n /// This conversion may entail doing a check for UTF-8 validity.\n /// Note that validation is performed because non-UTF-8 strings are\n /// perfectly valid for some OS.\n ///\n /// [`&str`]: str\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"foo.txt\");\n /// assert_eq!(path.to_str(), Some(\"foo.txt\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use = \"this returns the result of the operation, \\\n without modifying the original\"]\n #[inline]\n pub fn to_str(&self) -> Option<&str> {\n self.inner.to_str()\n }\n\n /// Converts a `Path` to a [`Cow`].\n ///\n /// Any non-Unicode sequences are replaced with\n /// [`U+FFFD REPLACEMENT CHARACTER`][U+FFFD].\n ///\n /// [U+FFFD]: super::char::REPLACEMENT_CHARACTER\n ///\n /// # Examples\n ///\n /// Calling `to_string_lossy` on a `Path` with valid unicode:\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"foo.txt\");\n /// assert_eq!(path.to_string_lossy(), \"foo.txt\");\n /// ```\n ///\n /// Had `path` contained invalid unicode, the `to_string_lossy` call might\n /// have returned `\"fo�.txt\"`.\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use = \"this returns the result of the operation, \\\n without modifying the original\"]\n #[inline]\n pub fn to_string_lossy(&self) -> Cow<'_, str> {\n self.inner.to_string_lossy()\n }\n\n /// Converts a `Path` to an owned [`PathBuf`].\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path_buf = Path::new(\"foo.txt\").to_path_buf();\n /// assert_eq!(path_buf, std::path::PathBuf::from(\"foo.txt\"));\n /// ```\n #[rustc_conversion_suggestion]\n #[must_use = \"this returns the result of the operation, \\\n without modifying the original\"]\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn to_path_buf(&self) -> PathBuf {\n PathBuf::from(self.inner.to_os_string())\n }\n\n /// Returns `true` if the `Path` is absolute, i.e., if it is independent of\n /// the current directory.\n ///\n /// * On Unix, a path is absolute if it starts with the root, so\n /// `is_absolute` and [`has_root`] are equivalent.\n ///\n /// * On Windows, a path is absolute if it has a prefix and starts with the\n /// root: `c:\\windows` is absolute, while `c:temp` and `\\temp` are not.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// assert!(!Path::new(\"foo.txt\").is_absolute());\n /// ```\n ///\n /// [`has_root`]: Path::has_root\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[allow(deprecated)]\n pub fn is_absolute(&self) -> bool {\n if cfg!(target_os = \"redox\") {\n // FIXME: Allow Redox prefixes\n self.has_root() || has_redox_scheme(self.as_u8_slice())\n } else {\n self.has_root() && (cfg!(any(unix, target_os = \"wasi\")) || self.prefix().is_some())\n }\n }\n\n /// Returns `true` if the `Path` is relative, i.e., not absolute.\n ///\n /// See [`is_absolute`]'s documentation for more details.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// assert!(Path::new(\"foo.txt\").is_relative());\n /// ```\n ///\n /// [`is_absolute`]: Path::is_absolute\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn is_relative(&self) -> bool {\n !self.is_absolute()\n }\n\n fn prefix(&self) -> Option> {\n self.components().prefix\n }\n\n /// Returns `true` if the `Path` has a root.\n ///\n /// * On Unix, a path has a root if it begins with `/`.\n ///\n /// * On Windows, a path has a root if it:\n /// * has no prefix and begins with a separator, e.g., `\\windows`\n /// * has a prefix followed by a separator, e.g., `c:\\windows` but not `c:windows`\n /// * has any non-disk prefix, e.g., `\\\\server\\share`\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// assert!(Path::new(\"/etc/passwd\").has_root());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n #[inline]\n pub fn has_root(&self) -> bool {\n self.components().has_root()\n }\n\n /// Returns the `Path` without its final component, if there is one.\n ///\n /// This means it returns `Some(\"\")` for relative paths with one component.\n ///\n /// Returns [`None`] if the path terminates in a root or prefix, or if it's\n /// the empty string.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/foo/bar\");\n /// let parent = path.parent().unwrap();\n /// assert_eq!(parent, Path::new(\"/foo\"));\n ///\n /// let grand_parent = parent.parent().unwrap();\n /// assert_eq!(grand_parent, Path::new(\"/\"));\n /// assert_eq!(grand_parent.parent(), None);\n ///\n /// let relative_path = Path::new(\"foo/bar\");\n /// let parent = relative_path.parent();\n /// assert_eq!(parent, Some(Path::new(\"foo\")));\n /// let grand_parent = parent.and_then(Path::parent);\n /// assert_eq!(grand_parent, Some(Path::new(\"\")));\n /// let great_grand_parent = grand_parent.and_then(Path::parent);\n /// assert_eq!(great_grand_parent, None);\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[doc(alias = \"dirname\")]\n #[must_use]\n pub fn parent(&self) -> Option<&Path> {\n let mut comps = self.components();\n let comp = comps.next_back();\n comp.and_then(|p| match p {\n Component::Normal(_) | Component::CurDir | Component::ParentDir => {\n Some(comps.as_path())\n }\n _ => None,\n })\n }\n\n /// Produces an iterator over `Path` and its ancestors.\n ///\n /// The iterator will yield the `Path` that is returned if the [`parent`] method is used zero\n /// or more times. That means, the iterator will yield `&self`, `&self.parent().unwrap()`,\n /// `&self.parent().unwrap().parent().unwrap()` and so on. If the [`parent`] method returns\n /// [`None`], the iterator will do likewise. The iterator will always yield at least one value,\n /// namely `&self`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let mut ancestors = Path::new(\"/foo/bar\").ancestors();\n /// assert_eq!(ancestors.next(), Some(Path::new(\"/foo/bar\")));\n /// assert_eq!(ancestors.next(), Some(Path::new(\"/foo\")));\n /// assert_eq!(ancestors.next(), Some(Path::new(\"/\")));\n /// assert_eq!(ancestors.next(), None);\n ///\n /// let mut ancestors = Path::new(\"../foo/bar\").ancestors();\n /// assert_eq!(ancestors.next(), Some(Path::new(\"../foo/bar\")));\n /// assert_eq!(ancestors.next(), Some(Path::new(\"../foo\")));\n /// assert_eq!(ancestors.next(), Some(Path::new(\"..\")));\n /// assert_eq!(ancestors.next(), Some(Path::new(\"\")));\n /// assert_eq!(ancestors.next(), None);\n /// ```\n ///\n /// [`parent`]: Path::parent\n #[stable(feature = \"path_ancestors\", since = \"1.28.0\")]\n #[inline]\n pub fn ancestors(&self) -> Ancestors<'_> {\n Ancestors { next: Some(&self) }\n }\n\n /// Returns the final component of the `Path`, if there is one.\n ///\n /// If the path is a normal file, this is the file name. If it's the path of a directory, this\n /// is the directory name.\n ///\n /// Returns [`None`] if the path terminates in `..`.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n /// use std::ffi::OsStr;\n ///\n /// assert_eq!(Some(OsStr::new(\"bin\")), Path::new(\"/usr/bin/\").file_name());\n /// assert_eq!(Some(OsStr::new(\"foo.txt\")), Path::new(\"tmp/foo.txt\").file_name());\n /// assert_eq!(Some(OsStr::new(\"foo.txt\")), Path::new(\"foo.txt/.\").file_name());\n /// assert_eq!(Some(OsStr::new(\"foo.txt\")), Path::new(\"foo.txt/.//\").file_name());\n /// assert_eq!(None, Path::new(\"foo.txt/..\").file_name());\n /// assert_eq!(None, Path::new(\"/\").file_name());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[doc(alias = \"basename\")]\n #[must_use]\n pub fn file_name(&self) -> Option<&OsStr> {\n self.components().next_back().and_then(|p| match p {\n Component::Normal(p) => Some(p),\n _ => None,\n })\n }\n\n /// Returns a path that, when joined onto `base`, yields `self`.\n ///\n /// # Errors\n ///\n /// If `base` is not a prefix of `self` (i.e., [`starts_with`]\n /// returns `false`), returns [`Err`].\n ///\n /// [`starts_with`]: Path::starts_with\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let path = Path::new(\"/test/haha/foo.txt\");\n ///\n /// assert_eq!(path.strip_prefix(\"/\"), Ok(Path::new(\"test/haha/foo.txt\")));\n /// assert_eq!(path.strip_prefix(\"/test\"), Ok(Path::new(\"haha/foo.txt\")));\n /// assert_eq!(path.strip_prefix(\"/test/\"), Ok(Path::new(\"haha/foo.txt\")));\n /// assert_eq!(path.strip_prefix(\"/test/haha/foo.txt\"), Ok(Path::new(\"\")));\n /// assert_eq!(path.strip_prefix(\"/test/haha/foo.txt/\"), Ok(Path::new(\"\")));\n ///\n /// assert!(path.strip_prefix(\"test\").is_err());\n /// assert!(path.strip_prefix(\"/haha\").is_err());\n ///\n /// let prefix = PathBuf::from(\"/test/\");\n /// assert_eq!(path.strip_prefix(prefix), Ok(Path::new(\"haha/foo.txt\")));\n /// ```\n #[stable(since = \"1.7.0\", feature = \"path_strip_prefix\")]\n pub fn strip_prefix

(&self, base: P) -> Result<&Path, StripPrefixError>\n where\n P: AsRef,\n {\n self._strip_prefix(base.as_ref())\n }\n\n fn _strip_prefix(&self, base: &Path) -> Result<&Path, StripPrefixError> {\n iter_after(self.components(), base.components())\n .map(|c| c.as_path())\n .ok_or(StripPrefixError(()))\n }\n\n /// Determines whether `base` is a prefix of `self`.\n ///\n /// Only considers whole path components to match.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/etc/passwd\");\n ///\n /// assert!(path.starts_with(\"/etc\"));\n /// assert!(path.starts_with(\"/etc/\"));\n /// assert!(path.starts_with(\"/etc/passwd\"));\n /// assert!(path.starts_with(\"/etc/passwd/\")); // extra slash is okay\n /// assert!(path.starts_with(\"/etc/passwd///\")); // multiple extra slashes are okay\n ///\n /// assert!(!path.starts_with(\"/e\"));\n /// assert!(!path.starts_with(\"/etc/passwd.txt\"));\n ///\n /// assert!(!Path::new(\"/etc/foo.rs\").starts_with(\"/etc/foo\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n pub fn starts_with>(&self, base: P) -> bool {\n self._starts_with(base.as_ref())\n }\n\n fn _starts_with(&self, base: &Path) -> bool {\n iter_after(self.components(), base.components()).is_some()\n }\n\n /// Determines whether `child` is a suffix of `self`.\n ///\n /// Only considers whole path components to match.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/etc/resolv.conf\");\n ///\n /// assert!(path.ends_with(\"resolv.conf\"));\n /// assert!(path.ends_with(\"etc/resolv.conf\"));\n /// assert!(path.ends_with(\"/etc/resolv.conf\"));\n ///\n /// assert!(!path.ends_with(\"/resolv.conf\"));\n /// assert!(!path.ends_with(\"conf\")); // use .extension() instead\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n pub fn ends_with>(&self, child: P) -> bool {\n self._ends_with(child.as_ref())\n }\n\n fn _ends_with(&self, child: &Path) -> bool {\n iter_after(self.components().rev(), child.components().rev()).is_some()\n }\n\n /// Extracts the stem (non-extension) portion of [`self.file_name`].\n ///\n /// [`self.file_name`]: Path::file_name\n ///\n /// The stem is:\n ///\n /// * [`None`], if there is no file name;\n /// * The entire file name if there is no embedded `.`;\n /// * The entire file name if the file name begins with `.` and has no other `.`s within;\n /// * Otherwise, the portion of the file name before the final `.`\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// assert_eq!(\"foo\", Path::new(\"foo.rs\").file_stem().unwrap());\n /// assert_eq!(\"foo.tar\", Path::new(\"foo.tar.gz\").file_stem().unwrap());\n /// ```\n ///\n /// # See Also\n /// This method is similar to [`Path::file_prefix`], which extracts the portion of the file name\n /// before the *first* `.`\n ///\n /// [`Path::file_prefix`]: Path::file_prefix\n ///\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n pub fn file_stem(&self) -> Option<&OsStr> {\n self.file_name().map(rsplit_file_at_dot).and_then(|(before, after)| before.or(after))\n }\n\n /// Extracts the prefix of [`self.file_name`].\n ///\n /// The prefix is:\n ///\n /// * [`None`], if there is no file name;\n /// * The entire file name if there is no embedded `.`;\n /// * The portion of the file name before the first non-beginning `.`;\n /// * The entire file name if the file name begins with `.` and has no other `.`s within;\n /// * The portion of the file name before the second `.` if the file name begins with `.`\n ///\n /// [`self.file_name`]: Path::file_name\n ///\n /// # Examples\n ///\n /// ```\n /// # #![feature(path_file_prefix)]\n /// use std::path::Path;\n ///\n /// assert_eq!(\"foo\", Path::new(\"foo.rs\").file_prefix().unwrap());\n /// assert_eq!(\"foo\", Path::new(\"foo.tar.gz\").file_prefix().unwrap());\n /// ```\n ///\n /// # See Also\n /// This method is similar to [`Path::file_stem`], which extracts the portion of the file name\n /// before the *last* `.`\n ///\n /// [`Path::file_stem`]: Path::file_stem\n ///\n #[unstable(feature = \"path_file_prefix\", issue = \"86319\")]\n #[must_use]\n pub fn file_prefix(&self) -> Option<&OsStr> {\n self.file_name().map(split_file_at_dot).and_then(|(before, _after)| Some(before))\n }\n\n /// Extracts the extension (without the leading dot) of [`self.file_name`], if possible.\n ///\n /// The extension is:\n ///\n /// * [`None`], if there is no file name;\n /// * [`None`], if there is no embedded `.`;\n /// * [`None`], if the file name begins with `.` and has no other `.`s within;\n /// * Otherwise, the portion of the file name after the final `.`\n ///\n /// [`self.file_name`]: Path::file_name\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// assert_eq!(\"rs\", Path::new(\"foo.rs\").extension().unwrap());\n /// assert_eq!(\"gz\", Path::new(\"foo.tar.gz\").extension().unwrap());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n pub fn extension(&self) -> Option<&OsStr> {\n self.file_name().map(rsplit_file_at_dot).and_then(|(before, after)| before.and(after))\n }\n\n /// Creates an owned [`PathBuf`] with `path` adjoined to `self`.\n ///\n /// If `path` is absolute, it replaces the current path.\n ///\n /// See [`PathBuf::push`] for more details on what it means to adjoin a path.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// assert_eq!(Path::new(\"/etc\").join(\"passwd\"), PathBuf::from(\"/etc/passwd\"));\n /// assert_eq!(Path::new(\"/etc\").join(\"/bin/sh\"), PathBuf::from(\"/bin/sh\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n pub fn join>(&self, path: P) -> PathBuf {\n self._join(path.as_ref())\n }\n\n fn _join(&self, path: &Path) -> PathBuf {\n let mut buf = self.to_path_buf();\n buf.push(path);\n buf\n }\n\n /// Creates an owned [`PathBuf`] like `self` but with the given file name.\n ///\n /// See [`PathBuf::set_file_name`] for more details.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let path = Path::new(\"/tmp/foo.png\");\n /// assert_eq!(path.with_file_name(\"bar\"), PathBuf::from(\"/tmp/bar\"));\n /// assert_eq!(path.with_file_name(\"bar.txt\"), PathBuf::from(\"/tmp/bar.txt\"));\n ///\n /// let path = Path::new(\"/tmp\");\n /// assert_eq!(path.with_file_name(\"var\"), PathBuf::from(\"/var\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use]\n pub fn with_file_name>(&self, file_name: S) -> PathBuf {\n self._with_file_name(file_name.as_ref())\n }\n\n fn _with_file_name(&self, file_name: &OsStr) -> PathBuf {\n let mut buf = self.to_path_buf();\n buf.set_file_name(file_name);\n buf\n }\n\n /// Creates an owned [`PathBuf`] like `self` but with the given extension.\n ///\n /// See [`PathBuf::set_extension`] for more details.\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, PathBuf};\n ///\n /// let path = Path::new(\"foo.rs\");\n /// assert_eq!(path.with_extension(\"txt\"), PathBuf::from(\"foo.txt\"));\n ///\n /// let path = Path::new(\"foo.tar.gz\");\n /// assert_eq!(path.with_extension(\"\"), PathBuf::from(\"foo.tar\"));\n /// assert_eq!(path.with_extension(\"xz\"), PathBuf::from(\"foo.tar.xz\"));\n /// assert_eq!(path.with_extension(\"\").with_extension(\"txt\"), PathBuf::from(\"foo.txt\"));\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn with_extension>(&self, extension: S) -> PathBuf {\n self._with_extension(extension.as_ref())\n }\n\n fn _with_extension(&self, extension: &OsStr) -> PathBuf {\n let self_len = self.as_os_str().len();\n let self_bytes = self.as_os_str().as_encoded_bytes();\n\n let (new_capacity, slice_to_copy) = match self.extension() {\n None => {\n // Enough capacity for the extension and the dot\n let capacity = self_len + extension.len() + 1;\n let whole_path = self_bytes.iter();\n (capacity, whole_path)\n }\n Some(previous_extension) => {\n let capacity = self_len + extension.len() - previous_extension.len();\n let path_till_dot = self_bytes[..self_len - previous_extension.len()].iter();\n (capacity, path_till_dot)\n }\n };\n\n let mut new_path = PathBuf::with_capacity(new_capacity);\n new_path.as_mut_vec().extend(slice_to_copy);\n new_path.set_extension(extension);\n new_path\n }\n\n /// Produces an iterator over the [`Component`]s of the path.\n ///\n /// When parsing the path, there is a small amount of normalization:\n ///\n /// * Repeated separators are ignored, so `a/b` and `a//b` both have\n /// `a` and `b` as components.\n ///\n /// * Occurrences of `.` are normalized away, except if they are at the\n /// beginning of the path. For example, `a/./b`, `a/b/`, `a/b/.` and\n /// `a/b` all have `a` and `b` as components, but `./a/b` starts with\n /// an additional [`CurDir`] component.\n ///\n /// * A trailing slash is normalized away, `/a/b` and `/a/b/` are equivalent.\n ///\n /// Note that no other normalization takes place; in particular, `a/c`\n /// and `a/b/../c` are distinct, to account for the possibility that `b`\n /// is a symbolic link (so its parent isn't `a`).\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{Path, Component};\n /// use std::ffi::OsStr;\n ///\n /// let mut components = Path::new(\"/tmp/foo.txt\").components();\n ///\n /// assert_eq!(components.next(), Some(Component::RootDir));\n /// assert_eq!(components.next(), Some(Component::Normal(OsStr::new(\"tmp\"))));\n /// assert_eq!(components.next(), Some(Component::Normal(OsStr::new(\"foo.txt\"))));\n /// assert_eq!(components.next(), None)\n /// ```\n ///\n /// [`CurDir`]: Component::CurDir\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n pub fn components(&self) -> Components<'_> {\n let prefix = parse_prefix(self.as_os_str());\n Components {\n path: self.as_u8_slice(),\n prefix,\n has_physical_root: has_physical_root(self.as_u8_slice(), prefix)\n || has_redox_scheme(self.as_u8_slice()),\n front: State::Prefix,\n back: State::Body,\n }\n }\n\n /// Produces an iterator over the path's components viewed as [`OsStr`]\n /// slices.\n ///\n /// For more information about the particulars of how the path is separated\n /// into components, see [`components`].\n ///\n /// [`components`]: Path::components\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::{self, Path};\n /// use std::ffi::OsStr;\n ///\n /// let mut it = Path::new(\"/tmp/foo.txt\").iter();\n /// assert_eq!(it.next(), Some(OsStr::new(&path::MAIN_SEPARATOR.to_string())));\n /// assert_eq!(it.next(), Some(OsStr::new(\"tmp\")));\n /// assert_eq!(it.next(), Some(OsStr::new(\"foo.txt\")));\n /// assert_eq!(it.next(), None)\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[inline]\n pub fn iter(&self) -> Iter<'_> {\n Iter { inner: self.components() }\n }\n\n /// Returns an object that implements [`Display`] for safely printing paths\n /// that may contain non-Unicode data. This may perform lossy conversion,\n /// depending on the platform. If you would like an implementation which\n /// escapes the path please use [`Debug`] instead.\n ///\n /// [`Display`]: fmt::Display\n /// [`Debug`]: fmt::Debug\n ///\n /// # Examples\n ///\n /// ```\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/tmp/foo.rs\");\n ///\n /// println!(\"{}\", path.display());\n /// ```\n #[stable(feature = \"rust1\", since = \"1.0.0\")]\n #[must_use = \"this does not display the path, \\\n it returns an object that can be displayed\"]\n #[inline]\n pub fn display(&self) -> Display<'_> {\n Display { path: self }\n }\n\n /// Queries the file system to get information about a file, directory, etc.\n ///\n /// This function will traverse symbolic links to query information about the\n /// destination file.\n ///\n /// This is an alias to [`fs::metadata`].\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/Minas/tirith\");\n /// let metadata = path.metadata().expect(\"metadata call failed\");\n /// println!(\"{:?}\", metadata.file_type());\n /// ```\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[inline]\n pub fn metadata(&self) -> io::Result {\n fs::metadata(self)\n }\n\n /// Queries the metadata about a file without following symlinks.\n ///\n /// This is an alias to [`fs::symlink_metadata`].\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/Minas/tirith\");\n /// let metadata = path.symlink_metadata().expect(\"symlink_metadata call failed\");\n /// println!(\"{:?}\", metadata.file_type());\n /// ```\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[inline]\n pub fn symlink_metadata(&self) -> io::Result {\n fs::symlink_metadata(self)\n }\n\n /// Returns the canonical, absolute form of the path with all intermediate\n /// components normalized and symbolic links resolved.\n ///\n /// This is an alias to [`fs::canonicalize`].\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::{Path, PathBuf};\n ///\n /// let path = Path::new(\"/foo/test/../test/bar.rs\");\n /// assert_eq!(path.canonicalize().unwrap(), PathBuf::from(\"/foo/test/bar.rs\"));\n /// ```\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[inline]\n pub fn canonicalize(&self) -> io::Result {\n fs::canonicalize(self)\n }\n\n /// Reads a symbolic link, returning the file that the link points to.\n ///\n /// This is an alias to [`fs::read_link`].\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/laputa/sky_castle.rs\");\n /// let path_link = path.read_link().expect(\"read_link call failed\");\n /// ```\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[inline]\n pub fn read_link(&self) -> io::Result {\n fs::read_link(self)\n }\n\n /// Returns an iterator over the entries within a directory.\n ///\n /// The iterator will yield instances of [io::Result]<[fs::DirEntry]>. New\n /// errors may be encountered after an iterator is initially constructed.\n ///\n /// This is an alias to [`fs::read_dir`].\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n ///\n /// let path = Path::new(\"/laputa\");\n /// for entry in path.read_dir().expect(\"read_dir call failed\") {\n /// if let Ok(entry) = entry {\n /// println!(\"{:?}\", entry.path());\n /// }\n /// }\n /// ```\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[inline]\n pub fn read_dir(&self) -> io::Result {\n fs::read_dir(self)\n }\n\n /// Returns `true` if the path points at an existing entity.\n ///\n /// Warning: this method may be error-prone, consider using [`try_exists()`] instead!\n /// It also has a risk of introducing time-of-check to time-of-use (TOCTOU) bugs.\n ///\n /// This function will traverse symbolic links to query information about the\n /// destination file.\n ///\n /// If you cannot access the metadata of the file, e.g. because of a\n /// permission error or broken symbolic links, this will return `false`.\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n /// assert!(!Path::new(\"does_not_exist.txt\").exists());\n /// ```\n ///\n /// # See Also\n ///\n /// This is a convenience function that coerces errors to false. If you want to\n /// check errors, call [`Path::try_exists`].\n ///\n /// [`try_exists()`]: Self::try_exists\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[must_use]\n #[inline]\n pub fn exists(&self) -> bool {\n fs::metadata(self).is_ok()\n }\n\n /// Returns `Ok(true)` if the path points at an existing entity.\n ///\n /// This function will traverse symbolic links to query information about the\n /// destination file. In case of broken symbolic links this will return `Ok(false)`.\n ///\n /// [`Path::exists()`] only checks whether or not a path was both found and readable. By\n /// contrast, `try_exists` will return `Ok(true)` or `Ok(false)`, respectively, if the path\n /// was _verified_ to exist or not exist. If its existence can neither be confirmed nor\n /// denied, it will propagate an `Err(_)` instead. This can be the case if e.g. listing\n /// permission is denied on one of the parent directories.\n ///\n /// Note that while this avoids some pitfalls of the `exists()` method, it still can not\n /// prevent time-of-check to time-of-use (TOCTOU) bugs. You should only use it in scenarios\n /// where those bugs are not an issue.\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n /// assert!(!Path::new(\"does_not_exist.txt\").try_exists().expect(\"Can't check existence of file does_not_exist.txt\"));\n /// assert!(Path::new(\"/root/secret_file.txt\").try_exists().is_err());\n /// ```\n ///\n /// [`exists()`]: Self::exists\n #[stable(feature = \"path_try_exists\", since = \"1.63.0\")]\n #[inline]\n pub fn try_exists(&self) -> io::Result {\n fs::try_exists(self)\n }\n\n /// Returns `true` if the path exists on disk and is pointing at a regular file.\n ///\n /// This function will traverse symbolic links to query information about the\n /// destination file.\n ///\n /// If you cannot access the metadata of the file, e.g. because of a\n /// permission error or broken symbolic links, this will return `false`.\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n /// assert_eq!(Path::new(\"./is_a_directory/\").is_file(), false);\n /// assert_eq!(Path::new(\"a_file.txt\").is_file(), true);\n /// ```\n ///\n /// # See Also\n ///\n /// This is a convenience function that coerces errors to false. If you want to\n /// check errors, call [`fs::metadata`] and handle its [`Result`]. Then call\n /// [`fs::Metadata::is_file`] if it was [`Ok`].\n ///\n /// When the goal is simply to read from (or write to) the source, the most\n /// reliable way to test the source can be read (or written to) is to open\n /// it. Only using `is_file` can break workflows like `diff <( prog_a )` on\n /// a Unix-like system for example. See [`fs::File::open`] or\n /// [`fs::OpenOptions::open`] for more information.\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[must_use]\n pub fn is_file(&self) -> bool {\n fs::metadata(self).map(|m| m.is_file()).unwrap_or(false)\n }\n\n /// Returns `true` if the path exists on disk and is pointing at a directory.\n ///\n /// This function will traverse symbolic links to query information about the\n /// destination file.\n ///\n /// If you cannot access the metadata of the file, e.g. because of a\n /// permission error or broken symbolic links, this will return `false`.\n ///\n /// # Examples\n ///\n /// ```no_run\n /// use std::path::Path;\n /// assert_eq!(Path::new(\"./is_a_directory/\").is_dir(), true);\n /// assert_eq!(Path::new(\"a_file.txt\").is_dir(), false);\n /// ```\n ///\n /// # See Also\n ///\n /// This is a convenience function that coerces errors to false. If you want to\n /// check errors, call [`fs::metadata`] and handle its [`Result`]. Then call\n /// [`fs::Metadata::is_dir`] if it was [`Ok`].\n #[stable(feature = \"path_ext\", since = \"1.5.0\")]\n #[must_use]\n pub fn is_dir(&self) -> bool {\n fs::metadata(self).map(|m| m.is_dir()).unwrap_or(false)\n }\n\n /// Returns `true` if the path exists on disk and is pointing at a symbolic link.\n ///\n /// This function will not traverse symbolic links.\n /// In case of a broken symbolic link this will also return true.\n ///\n /// If you cannot access the directory containing the file, e.g., because of a\n /// permission error, this will return false.\n ///\n /// # Examples\n ///\n #[cfg_attr(unix, doc = \"```no_run\")]\n #[cfg_attr(not(unix), doc = \"```ignore\")]\n /// use std::path::Path;\n /// use std::os::unix::fs::symlink;\n ///\n /// let link_path = Path::new(\"link\");\n /// symlink(\"/origin_does_not_exist/\", link_path).unwrap();\n /// assert_eq!(link_path.is_symlink(), true);\n /// assert_eq!(link_path.exists(), false);\n /// ```\n ///\n /// # See Also\n ///\n /// This is a convenience function that coerces errors to false. If you want to\n /// check errors, call [`fs::symlink_metadata`] and handle its [`Result`]. Then call\n /// [`fs::Metadata::is_symlink`] if it was [`Ok`].\n #[must_use]\n #[stable(feature = \"is_symlink\", since = \"1.58.0\")]\n pub fn is_symlink(&self) -> bool {\n fs::symlink_metadata(self).map(|m| m.is_symlink()).unwrap_or(false)\n }\n\n /// Converts a [`Box`](Box) into a [`PathBuf`] without copying or\n /// allocating.\n #[stable(feature = \"into_boxed_path\", since = \"1.20.0\")]\n #[must_use = \"`self` will be dropped if the result is not used\"]\n pub fn into_path_buf(self: Box) -> PathBuf {\n let rw = Box::into_raw(self) as *mut OsStr;\n let inner = unsafe { Box::from_raw(rw) };\n PathBuf { inner: OsString::from(inner) }\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Path {\n #[inline]\n fn as_ref(&self) -> &OsStr {\n &self.inner\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl fmt::Debug for Path {\n fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {\n fmt::Debug::fmt(&self.inner, formatter)\n }\n}\n\n/// Helper struct for safely printing paths with [`format!`] and `{}`.\n///\n/// A [`Path`] might contain non-Unicode data. This `struct` implements the\n/// [`Display`] trait in a way that mitigates that. It is created by the\n/// [`display`](Path::display) method on [`Path`]. This may perform lossy\n/// conversion, depending on the platform. If you would like an implementation\n/// which escapes the path please use [`Debug`] instead.\n///\n/// # Examples\n///\n/// ```\n/// use std::path::Path;\n///\n/// let path = Path::new(\"/tmp/foo.rs\");\n///\n/// println!(\"{}\", path.display());\n/// ```\n///\n/// [`Display`]: fmt::Display\n/// [`format!`]: crate::format\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\npub struct Display<'a> {\n path: &'a Path,\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl fmt::Debug for Display<'_> {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n fmt::Debug::fmt(&self.path, f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl fmt::Display for Display<'_> {\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n self.path.inner.display(f)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl PartialEq for Path {\n #[inline]\n fn eq(&self, other: &Path) -> bool {\n self.components() == other.components()\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Hash for Path {\n fn hash(&self, h: &mut H) {\n let bytes = self.as_u8_slice();\n let (prefix_len, verbatim) = match parse_prefix(&self.inner) {\n Some(prefix) => {\n prefix.hash(h);\n (prefix.len(), prefix.is_verbatim())\n }\n None => (0, false),\n };\n let bytes = &bytes[prefix_len..];\n\n let mut component_start = 0;\n let mut bytes_hashed = 0;\n\n for i in 0..bytes.len() {\n let is_sep = if verbatim { is_verbatim_sep(bytes[i]) } else { is_sep_byte(bytes[i]) };\n if is_sep {\n if i > component_start {\n let to_hash = &bytes[component_start..i];\n h.write(to_hash);\n bytes_hashed += to_hash.len();\n }\n\n // skip over separator and optionally a following CurDir item\n // since components() would normalize these away.\n component_start = i + 1;\n\n let tail = &bytes[component_start..];\n\n if !verbatim {\n component_start += match tail {\n [b'.'] => 1,\n [b'.', sep @ _, ..] if is_sep_byte(*sep) => 1,\n _ => 0,\n };\n }\n }\n }\n\n if component_start < bytes.len() {\n let to_hash = &bytes[component_start..];\n h.write(to_hash);\n bytes_hashed += to_hash.len();\n }\n\n h.write_usize(bytes_hashed);\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Eq for Path {}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl PartialOrd for Path {\n #[inline]\n fn partial_cmp(&self, other: &Path) -> Option {\n Some(compare_components(self.components(), other.components()))\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl Ord for Path {\n #[inline]\n fn cmp(&self, other: &Path) -> cmp::Ordering {\n compare_components(self.components(), other.components())\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for Path {\n #[inline]\n fn as_ref(&self) -> &Path {\n self\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for OsStr {\n #[inline]\n fn as_ref(&self) -> &Path {\n Path::new(self)\n }\n}\n\n#[stable(feature = \"cow_os_str_as_ref_path\", since = \"1.8.0\")]\nimpl AsRef for Cow<'_, OsStr> {\n #[inline]\n fn as_ref(&self) -> &Path {\n Path::new(self)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for OsString {\n #[inline]\n fn as_ref(&self) -> &Path {\n Path::new(self)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for str {\n #[inline]\n fn as_ref(&self) -> &Path {\n Path::new(self)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for String {\n #[inline]\n fn as_ref(&self) -> &Path {\n Path::new(self)\n }\n}\n\n#[stable(feature = \"rust1\", since = \"1.0.0\")]\nimpl AsRef for PathBuf {\n #[inline]\n fn as_ref(&self) -> &Path {\n self\n }\n}\n\n#[stable(feature = \"path_into_iter\", since = \"1.6.0\")]\nimpl<'a> IntoIterator for &'a PathBuf {\n type Item = &'a OsStr;\n type IntoIter = Iter<'a>;\n #[inline]\n fn into_iter(self) -> Iter<'a> {\n self.iter()\n }\n}\n\n#[stable(feature = \"path_into_iter\", since = \"1.6.0\")]\nimpl<'a> IntoIterator for &'a Path {\n type Item = &'a OsStr;\n type IntoIter = Iter<'a>;\n #[inline]\n fn into_iter(self) -> Iter<'a> {\n self.iter()\n }\n}\n\nmacro_rules! impl_cmp {\n (<$($life:lifetime),*> $lhs:ty, $rhs: ty) => {\n #[stable(feature = \"partialeq_path\", since = \"1.6.0\")]\n impl<$($life),*> PartialEq<$rhs> for $lhs {\n #[inline]\n fn eq(&self, other: &$rhs) -> bool {\n ::eq(self, other)\n }\n }\n\n #[stable(feature = \"partialeq_path\", since = \"1.6.0\")]\n impl<$($life),*> PartialEq<$lhs> for $rhs {\n #[inline]\n fn eq(&self, other: &$lhs) -> bool {\n ::eq(self, other)\n }\n }\n\n #[stable(feature = \"cmp_path\", since = \"1.8.0\")]\n impl<$($life),*> PartialOrd<$rhs> for $lhs {\n #[inline]\n fn partial_cmp(&self, other: &$rhs) -> Option {\n ::partial_cmp(self, other)\n }\n }\n\n #[stable(feature = \"cmp_path\", since = \"1.8.0\")]\n impl<$($life),*> PartialOrd<$lhs> for $rhs {\n #[inline]\n fn partial_cmp(&self, other: &$lhs) -> Option {\n ::partial_cmp(self, other)\n }\n }\n };\n}\n\nimpl_cmp!(<> PathBuf, Path);\nimpl_cmp!(<'a> PathBuf, &'a Path);\nimpl_cmp!(<'a> Cow<'a, Path>, Path);\nimpl_cmp!(<'a, 'b> Cow<'a, Path>, &'b Path);\nimpl_cmp!(<'a> Cow<'a, Path>, PathBuf);\n\nmacro_rules! impl_cmp_os_str {\n (<$($life:lifetime),*> $lhs:ty, $rhs: ty) => {\n #[stable(feature = \"cmp_path\", since = \"1.8.0\")]\n impl<$($life),*> PartialEq<$rhs> for $lhs {\n #[inline]\n fn eq(&self, other: &$rhs) -> bool {\n ::eq(self, other.as_ref())\n }\n }\n\n #[stable(feature = \"cmp_path\", since = \"1.8.0\")]\n impl<$($life),*> PartialEq<$lhs> for $rhs {\n #[inline]\n fn eq(&self, other: &$lhs) -> bool {\n ::eq(self.as_ref(), other)\n }\n }\n\n #[stable(feature = \"cmp_path\", since = \"1.8.0\")]\n impl<$($life),*> PartialOrd<$rhs> for $lhs {\n #[inline]\n fn partial_cmp(&self, other: &$rhs) -> Option {\n ::partial_cmp(self, other.as_ref())\n }\n }\n\n #[stable(feature = \"cmp_path\", since = \"1.8.0\")]\n impl<$($life),*> PartialOrd<$lhs> for $rhs {\n #[inline]\n fn partial_cmp(&self, other: &$lhs) -> Option {\n ::partial_cmp(self.as_ref(), other)\n }\n }\n };\n}\n\nimpl_cmp_os_str!(<> PathBuf, OsStr);\nimpl_cmp_os_str!(<'a> PathBuf, &'a OsStr);\nimpl_cmp_os_str!(<'a> PathBuf, Cow<'a, OsStr>);\nimpl_cmp_os_str!(<> PathBuf, OsString);\nimpl_cmp_os_str!(<> Path, OsStr);\nimpl_cmp_os_str!(<'a> Path, &'a OsStr);\nimpl_cmp_os_str!(<'a> Path, Cow<'a, OsStr>);\nimpl_cmp_os_str!(<> Path, OsString);\nimpl_cmp_os_str!(<'a> &'a Path, OsStr);\nimpl_cmp_os_str!(<'a, 'b> &'a Path, Cow<'b, OsStr>);\nimpl_cmp_os_str!(<'a> &'a Path, OsString);\nimpl_cmp_os_str!(<'a> Cow<'a, Path>, OsStr);\nimpl_cmp_os_str!(<'a, 'b> Cow<'a, Path>, &'b OsStr);\nimpl_cmp_os_str!(<'a> Cow<'a, Path>, OsString);\n\n#[stable(since = \"1.7.0\", feature = \"strip_prefix\")]\nimpl fmt::Display for StripPrefixError {\n #[allow(deprecated, deprecated_in_future)]\n fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n self.description().fmt(f)\n }\n}\n\n#[stable(since = \"1.7.0\", feature = \"strip_prefix\")]\nimpl Error for StripPrefixError {\n #[allow(deprecated)]\n fn description(&self) -> &str {\n \"prefix not found\"\n }\n}\n\n/// Makes the path absolute without accessing the filesystem.\n///\n/// If the path is relative, the current directory is used as the base directory.\n/// All intermediate components will be resolved according to platforms-specific\n/// rules but unlike [`canonicalize`][crate::fs::canonicalize] this does not\n/// resolve symlinks and may succeed even if the path does not exist.\n///\n/// If the `path` is empty or getting the\n/// [current directory][crate::env::current_dir] fails then an error will be\n/// returned.\n///\n/// # Examples\n///\n/// ## Posix paths\n///\n/// ```\n/// #![feature(absolute_path)]\n/// # #[cfg(unix)]\n/// fn main() -> std::io::Result<()> {\n/// use std::path::{self, Path};\n///\n/// // Relative to absolute\n/// let absolute = path::absolute(\"foo/./bar\")?;\n/// assert!(absolute.ends_with(\"foo/bar\"));\n///\n/// // Absolute to absolute\n/// let absolute = path::absolute(\"/foo//test/.././bar.rs\")?;\n/// assert_eq!(absolute, Path::new(\"/foo/test/../bar.rs\"));\n/// Ok(())\n/// }\n/// # #[cfg(not(unix))]\n/// # fn main() {}\n/// ```\n///\n/// The path is resolved using [POSIX semantics][posix-semantics] except that\n/// it stops short of resolving symlinks. This means it will keep `..`\n/// components and trailing slashes.\n///\n/// ## Windows paths\n///\n/// ```\n/// #![feature(absolute_path)]\n/// # #[cfg(windows)]\n/// fn main() -> std::io::Result<()> {\n/// use std::path::{self, Path};\n///\n/// // Relative to absolute\n/// let absolute = path::absolute(\"foo/./bar\")?;\n/// assert!(absolute.ends_with(r\"foo\\bar\"));\n///\n/// // Absolute to absolute\n/// let absolute = path::absolute(r\"C:\\foo//test\\..\\./bar.rs\")?;\n///\n/// assert_eq!(absolute, Path::new(r\"C:\\foo\\bar.rs\"));\n/// Ok(())\n/// }\n/// # #[cfg(not(windows))]\n/// # fn main() {}\n/// ```\n///\n/// For verbatim paths this will simply return the path as given. For other\n/// paths this is currently equivalent to calling [`GetFullPathNameW`][windows-path]\n/// This may change in the future.\n///\n/// [posix-semantics]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13\n/// [windows-path]: https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfullpathnamew\n#[unstable(feature = \"absolute_path\", issue = \"92750\")]\npub fn absolute>(path: P) -> io::Result {\n let path = path.as_ref();\n if path.as_os_str().is_empty() {\n Err(io::const_io_error!(io::ErrorKind::InvalidInput, \"cannot make an empty path absolute\",))\n } else {\n sys::path::absolute(path)\n }\n}\n", "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs", "version": 0 } } } 08:19:52.676 Client { "id": "{4b2f3354-8f8d-4cb6-b3f3-67a9f353c159}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } } } 08:19:52.797 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{4b2f3354-8f8d-4cb6-b3f3-67a9f353c159}" } } 08:19:52.797 Client { "id": "{a0047238-fb91-4a75-b726-6e24d7225e2b}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } } } 08:19:52.819 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{4b2f3354-8f8d-4cb6-b3f3-67a9f353c159}", "jsonrpc": "2.0" } 08:19:52.905 Server { "id": "{a2e021ad-451a-4a78-8afd-4c1f5a32c3b0}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 33, "line": 171 }, "start": { "character": 26, "line": 171 } } }, { "range": { "end": { "character": 36, "line": 259 }, "start": { "character": 29, "line": 259 } } }, { "range": { "end": { "character": 39, "line": 30 }, "start": { "character": 32, "line": 30 } } }, { "range": { "end": { "character": 24, "line": 42 }, "start": { "character": 17, "line": 42 } } }, { "range": { "end": { "character": 21, "line": 18 }, "start": { "character": 14, "line": 18 } } }, { "range": { "end": { "character": 35, "line": 10 }, "start": { "character": 28, "line": 10 } } }, { "range": { "end": { "character": 17, "line": 2 }, "start": { "character": 10, "line": 2 } } }, { "range": { "end": { "character": 39, "line": 22 }, "start": { "character": 32, "line": 22 } } }, { "range": { "end": { "character": 32, "line": 182 }, "start": { "character": 25, "line": 182 } } }, { "range": { "end": { "character": 33, "line": 251 }, "start": { "character": 26, "line": 251 } } }, { "range": { "end": { "character": 34, "line": 7 }, "start": { "character": 27, "line": 7 } } }, { "range": { "end": { "character": 33, "line": 255 }, "start": { "character": 26, "line": 255 } } } ] } 08:19:52.907 Server { "id": 7, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Building" } } 08:19:52.907 Client { "id": 7, "jsonrpc": "2.0", "result": null } 08:19:52.907 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "begin", "title": "Building" } } } 08:19:52.907 Server { "id": 8, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Loading" } } 08:19:52.907 Client { "id": 8, "jsonrpc": "2.0", "result": null } 08:19:52.907 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "begin", "title": "Loading" } } } 08:19:52.909 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "kind": "end" } } } 08:19:52.909 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ { "code": "unresolved-proc-macro", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#unresolved-proc-macro" }, "message": "proc macro `__concatcp_impl` not expanded: No proc-macros present for crate", "range": { "end": { "character": 2, "line": 9 }, "start": { "character": 0, "line": 0 } }, "severity": 1, "source": "rust-analyzer" }, { "code": "unresolved-proc-macro", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#unresolved-proc-macro" }, "message": "proc macro `__concatcp_impl` not expanded: No proc-macros present for crate", "range": { "end": { "character": 2, "line": 18 }, "start": { "character": 0, "line": 11 } }, "severity": 1, "source": "rust-analyzer" } ], "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs", "version": 0 } } 08:19:52.910 Client { "id": "{5c09c794-11a5-4915-bf7f-8a0d7ad83e3d}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ { "code": "unresolved-proc-macro", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#unresolved-proc-macro" }, "message": "proc macro `__concatcp_impl` not expanded: No proc-macros present for crate", "range": { "end": { "character": 2, "line": 9 }, "start": { "character": 0, "line": 0 } }, "severity": 1, "source": "rust-analyzer" }, { "code": "unresolved-proc-macro", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#unresolved-proc-macro" }, "message": "proc macro `__concatcp_impl` not expanded: No proc-macros present for crate", "range": { "end": { "character": 2, "line": 18 }, "start": { "character": 0, "line": 11 } }, "severity": 1, "source": "rust-analyzer" } ] }, "range": { "end": { "character": 0, "line": 19 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs" } } } 08:19:52.910 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ ], "uri": "file:///_/code/rust/toolbox/crate.rs", "version": 0 } } 08:19:52.910 Client { "id": "{4cbf1c73-cf8f-48ee-bc0f-e75f8f6c7253}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ ] }, "range": { "end": { "character": 0, "line": 18 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/toolbox/crate.rs" } } } 08:19:52.910 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ ], "uri": "file:///_/code/rust/toolbox/glsl/mod.rs", "version": 0 } } 08:19:52.910 Client { "id": "{c6b30184-629b-40aa-8888-bb6debb9f7be}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ ] }, "range": { "end": { "character": 0, "line": 2 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/mod.rs" } } } 08:19:53.007 Client { "id": "{911b486e-f791-46a3-b841-057978b02e4b}", "jsonrpc": "2.0", "method": "textDocument/documentSymbol", "params": { "textDocument": { "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } } } 08:19:53.031 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: libc" } } } 08:19:53.031 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: libc" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: autocfg" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: cfg-if" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: crossbeam-utils" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: pin-project-lite" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: proc-macro2" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: libc" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: libc" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: crossbeam-utils" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: proc-macro2" } } } 08:19:53.032 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: unicode-ident" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: parking" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: jobserver" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: crossbeam-utils" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: proc-macro2" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: futures-core" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-traits" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: futures-io" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: cc" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: concurrent-queue" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: quote" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: fastrand" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: num-traits" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: getrandom" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: event-listener" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: tracing-core" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: futures-lite" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-traits" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: slab" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rustix" } } } 08:19:53.036 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: event-listener-strategy" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: tracing" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: bitflags" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: rustix" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: slab" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: linux-raw-sys" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-lock" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: slab" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rustix" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: syn" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: signal-hook-registry" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: lock_api" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: serde" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: bytemuck" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: pkg-config" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: khronos_api" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: proc-macro-hack" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: polling" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: serde" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: khronos_api" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: zstd-sys" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: proc-macro-hack" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: serde_derive" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: lock_api" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-integer" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: paste" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: version_check" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: atomic-waker" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: glob" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: scopeguard" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-task" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: num-integer" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: piper" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: ahash" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: paste" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: libwebp-sys" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: lock_api" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: serde" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: zstd-sys" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: khronos_api" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: proc-macro-hack" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: safe_arch" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-io" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-channel" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: cmake" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-rational" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: matrixmultiply" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: log" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: xml-rs" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: log" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: typenum" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: matrixmultiply" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: blocking" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: num-rational" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: gl_generator" } } } 08:19:53.037 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: mio" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: typenum" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: glfw-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: paste-impl" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: wide" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: ahash" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: libwebp-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-integer" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: paste" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: approx" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-complex" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rand_core" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: zstd-safe" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rawpointer" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: zerocopy" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: once_cell" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: syn" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: signal-hook" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: parking_lot_core" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: bitflags" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: zstd-safe" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: ahash" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: matrixmultiply" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: signal-hook" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: parking_lot_core" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: syn" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: simba" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: libwebp-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num-rational" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: paste" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: typenum" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: gl" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: glfw-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-signal" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: zstd-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: inotify-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: cfg-if" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: serde_json" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: unicode-xid" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: ttf-parser" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: ppv-lite86" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: smallvec" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: same-file" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rand_chacha" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: const_format_proc_macros" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: owned_ttf_parser" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: inotify" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: walkdir" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: parking_lot_core" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: simdeez" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: serde_json" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: gl" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: glfw-sys" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-process" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: zstd-safe" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: nalgebra" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: signal-hook" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: syn" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: webp" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-net" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-fs" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: spin" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: async-executor" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: nanorand" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: crossbeam-channel" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: filetime" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: futures-sink" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: raw-window-handle" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: byteorder" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: ryu" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: color_quant" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: itoa" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: ab_glyph_rasterizer" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: allocator-api2" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: notify" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: flume" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: glfw" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: serde_json" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: hashbrown" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rusttype" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: image" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: smol" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: nalgebra-glm" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: trait-set" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: signal-hook-mio" } } } 08:19:53.038 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: zstd" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: simdnoise" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: parking_lot" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: gl" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rand" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: const_format" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: tobj" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: rand_xorshift" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: bincode" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: half" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: num_cpus" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: lazy_static" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: crossterm" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: colored" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "running build-script: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: grafix-toolbox" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "shworld" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "shworld" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "shworld" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "shworld" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "test" } } } 08:19:53.039 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "cancellable": false, "kind": "report", "message": "building proc-macros: sheltered_world" } } } 08:19:53.057 Client { "id": "{50580435-9d39-4ff5-86b0-d13409f7e4e3}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 11, "line": 1166 }, "textDocument": { "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } } } 08:19:53.063 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Building", "value": { "kind": "end" } } } 08:19:53.063 Server { "id": "{c6b30184-629b-40aa-8888-bb6debb9f7be}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "pub(crate) ", "range": { "end": { "character": 0, "line": 0 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/mod.rs", "version": 0 } } ] }, "kind": "refactor.rewrite", "title": "Change visibility to pub(crate)" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n pub use inline_shaders::*;\n\n pub(crate) mod inline_shaders;\n}", "range": { "end": { "character": 26, "line": 1 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/mod.rs", "version": 0 } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "kind": "rename", "newUri": "file:///_/code/rust/toolbox/glsl.rs", "oldUri": "file:///_/code/rust/toolbox/glsl/mod.rs" } ] }, "kind": "refactor", "title": "Convert glsl/mod.rs to glsl.rs" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "", "range": { "end": { "character": 0, "line": 2 }, "start": { "character": 0, "line": 1 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/mod.rs", "version": 0 } } ] }, "kind": "quickfix", "title": "Remove all the unused imports" } ] } 08:19:53.063 Server { "id": "{4cbf1c73-cf8f-48ee-bc0f-e75f8f6c7253}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n pub use kit::*;\n\n #[macro_use]\n pub(crate) mod kit;\n\n pub mod glsl;\n\n #[cfg(feature = \"gui\")]\n pub mod gui;\n}", "range": { "end": { "character": 15, "line": 17 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/crate.rs", "version": 0 } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "", "range": { "end": { "character": 0, "line": 18 }, "start": { "character": 0, "line": 17 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/crate.rs", "version": 0 } } ] }, "kind": "quickfix", "title": "Remove all the unused imports" } ] } 08:19:53.071 Server { "id": "{911b486e-f791-46a3-b841-057978b02e4b}", "jsonrpc": "2.0", "result": [ { "deprecated": false, "kind": 2, "name": "tests", "range": { "end": { "character": 10, "line": 70 }, "start": { "character": 0, "line": 69 } }, "selectionRange": { "end": { "character": 9, "line": 70 }, "start": { "character": 4, "line": 70 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "kind": 22, "name": "Verbatim", "range": { "end": { "character": 69, "line": 148 }, "start": { "character": 4, "line": 143 } }, "selectionRange": { "end": { "character": 12, "line": 148 }, "start": { "character": 4, "line": 148 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "VerbatimUNC", "range": { "end": { "character": 5, "line": 159 }, "start": { "character": 4, "line": 150 } }, "selectionRange": { "end": { "character": 15, "line": 156 }, "start": { "character": 4, "line": 156 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "VerbatimDisk", "range": { "end": { "character": 66, "line": 166 }, "start": { "character": 4, "line": 161 } }, "selectionRange": { "end": { "character": 16, "line": 166 }, "start": { "character": 4, "line": 166 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "DeviceNS", "range": { "end": { "character": 69, "line": 173 }, "start": { "character": 4, "line": 168 } }, "selectionRange": { "end": { "character": 12, "line": 173 }, "start": { "character": 4, "line": 173 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "UNC", "range": { "end": { "character": 5, "line": 183 }, "start": { "character": 4, "line": 175 } }, "selectionRange": { "end": { "character": 7, "line": 180 }, "start": { "character": 4, "line": 180 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Disk", "range": { "end": { "character": 58, "line": 187 }, "start": { "character": 4, "line": 185 } }, "selectionRange": { "end": { "character": 8, "line": 187 }, "start": { "character": 4, "line": 187 } }, "tags": [ ] } ], "deprecated": false, "kind": 10, "name": "Prefix", "range": { "end": { "character": 1, "line": 188 }, "start": { "character": 0, "line": 104 } }, "selectionRange": { "end": { "character": 15, "line": 142 }, "start": { "character": 9, "line": 142 } }, "tags": [ ] }, { "children": [ { "children": [ { "deprecated": false, "detail": "fn(s: &OsStr) -> usize", "kind": 12, "name": "os_str_len", "range": { "end": { "character": 9, "line": 196 }, "start": { "character": 8, "line": 194 } }, "selectionRange": { "end": { "character": 21, "line": 194 }, "start": { "character": 11, "line": 194 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn(&self) -> usize", "kind": 12, "name": "len", "range": { "end": { "character": 5, "line": 207 }, "start": { "character": 4, "line": 191 } }, "selectionRange": { "end": { "character": 10, "line": 192 }, "start": { "character": 7, "line": 192 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_verbatim", "range": { "end": { "character": 5, "line": 230 }, "start": { "character": 4, "line": 209 } }, "selectionRange": { "end": { "character": 22, "line": 227 }, "start": { "character": 11, "line": 227 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_drive", "range": { "end": { "character": 5, "line": 235 }, "start": { "character": 4, "line": 232 } }, "selectionRange": { "end": { "character": 15, "line": 233 }, "start": { "character": 7, "line": 233 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "has_implicit_root", "range": { "end": { "character": 5, "line": 240 }, "start": { "character": 4, "line": 237 } }, "selectionRange": { "end": { "character": 24, "line": 238 }, "start": { "character": 7, "line": 238 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Prefix<'a>", "range": { "end": { "character": 1, "line": 241 }, "start": { "character": 0, "line": 190 } }, "selectionRange": { "end": { "character": 19, "line": 190 }, "start": { "character": 9, "line": 190 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(c: char) -> bool", "kind": 12, "name": "is_separator", "range": { "end": { "character": 1, "line": 262 }, "start": { "character": 0, "line": 247 } }, "selectionRange": { "end": { "character": 19, "line": 260 }, "start": { "character": 7, "line": 260 } }, "tags": [ ] }, { "deprecated": false, "detail": "char", "kind": 14, "name": "MAIN_SEPARATOR", "range": { "end": { "character": 60, "line": 268 }, "start": { "character": 0, "line": 264 } }, "selectionRange": { "end": { "character": 24, "line": 268 }, "start": { "character": 10, "line": 268 } }, "tags": [ ] }, { "deprecated": false, "detail": "&str", "kind": 14, "name": "MAIN_SEPARATOR_STR", "range": { "end": { "character": 68, "line": 274 }, "start": { "character": 0, "line": 270 } }, "selectionRange": { "end": { "character": 28, "line": 274 }, "start": { "character": 10, "line": 274 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn<'a, 'b, I, J>(mut iter: I, mut prefix: J) -> Option", "kind": 12, "name": "iter_after", "range": { "end": { "character": 1, "line": 299 }, "start": { "character": 0, "line": 280 } }, "selectionRange": { "end": { "character": 13, "line": 283 }, "start": { "character": 3, "line": 283 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(s: &[u8]) -> bool", "kind": 12, "name": "has_redox_scheme", "range": { "end": { "character": 1, "line": 304 }, "start": { "character": 0, "line": 301 } }, "selectionRange": { "end": { "character": 19, "line": 302 }, "start": { "character": 3, "line": 302 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(s: &[u8], prefix: Option>) -> bool", "kind": 12, "name": "has_physical_root", "range": { "end": { "character": 1, "line": 314 }, "start": { "character": 0, "line": 310 } }, "selectionRange": { "end": { "character": 20, "line": 311 }, "start": { "character": 3, "line": 311 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(file: &OsStr) -> (Option<&OsStr>, Option<&OsStr>)", "kind": 12, "name": "rsplit_file_at_dot", "range": { "end": { "character": 1, "line": 339 }, "start": { "character": 0, "line": 316 } }, "selectionRange": { "end": { "character": 21, "line": 317 }, "start": { "character": 3, "line": 317 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(file: &OsStr) -> (&OsStr, Option<&OsStr>)", "kind": 12, "name": "split_file_at_dot", "range": { "end": { "character": 1, "line": 363 }, "start": { "character": 0, "line": 341 } }, "selectionRange": { "end": { "character": 20, "line": 341 }, "start": { "character": 3, "line": 341 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "kind": 22, "name": "Prefix", "range": { "end": { "character": 14, "line": 377 }, "start": { "character": 4, "line": 377 } }, "selectionRange": { "end": { "character": 10, "line": 377 }, "start": { "character": 4, "line": 377 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "StartDir", "range": { "end": { "character": 16, "line": 378 }, "start": { "character": 18, "line": 377 } }, "selectionRange": { "end": { "character": 12, "line": 378 }, "start": { "character": 4, "line": 378 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Body", "range": { "end": { "character": 12, "line": 379 }, "start": { "character": 18, "line": 378 } }, "selectionRange": { "end": { "character": 8, "line": 379 }, "start": { "character": 4, "line": 379 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Done", "range": { "end": { "character": 12, "line": 380 }, "start": { "character": 18, "line": 379 } }, "selectionRange": { "end": { "character": 8, "line": 380 }, "start": { "character": 4, "line": 380 } }, "tags": [ ] } ], "deprecated": false, "kind": 10, "name": "State", "range": { "end": { "character": 1, "line": 381 }, "start": { "character": 0, "line": 369 } }, "selectionRange": { "end": { "character": 10, "line": 376 }, "start": { "character": 5, "line": 376 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a OsStr", "kind": 8, "name": "raw", "range": { "end": { "character": 18, "line": 420 }, "start": { "character": 4, "line": 419 } }, "selectionRange": { "end": { "character": 7, "line": 420 }, "start": { "character": 4, "line": 420 } }, "tags": [ ] }, { "deprecated": false, "detail": "Prefix<'a>", "kind": 8, "name": "parsed", "range": { "end": { "character": 22, "line": 423 }, "start": { "character": 4, "line": 422 } }, "selectionRange": { "end": { "character": 10, "line": 423 }, "start": { "character": 4, "line": 423 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "PrefixComponent", "range": { "end": { "character": 1, "line": 424 }, "start": { "character": 0, "line": 383 } }, "selectionRange": { "end": { "character": 26, "line": 418 }, "start": { "character": 11, "line": 418 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> Prefix<'a>", "kind": 12, "name": "kind", "range": { "end": { "character": 5, "line": 436 }, "start": { "character": 4, "line": 427 } }, "selectionRange": { "end": { "character": 15, "line": 434 }, "start": { "character": 11, "line": 434 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> &'a OsStr", "kind": 12, "name": "as_os_str", "range": { "end": { "character": 5, "line": 444 }, "start": { "character": 4, "line": 438 } }, "selectionRange": { "end": { "character": 20, "line": 442 }, "start": { "character": 11, "line": 442 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PrefixComponent<'a>", "range": { "end": { "character": 1, "line": 445 }, "start": { "character": 0, "line": 426 } }, "selectionRange": { "end": { "character": 28, "line": 426 }, "start": { "character": 9, "line": 426 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &PrefixComponent<'a>) -> bool", "kind": 12, "name": "eq", "range": { "end": { "character": 5, "line": 452 }, "start": { "character": 4, "line": 449 } }, "selectionRange": { "end": { "character": 9, "line": 450 }, "start": { "character": 7, "line": 450 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialEq for PrefixComponent<'a>", "range": { "end": { "character": 1, "line": 453 }, "start": { "character": 0, "line": 447 } }, "selectionRange": { "end": { "character": 42, "line": 448 }, "start": { "character": 23, "line": 448 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &PrefixComponent<'a>) -> Option", "kind": 12, "name": "partial_cmp", "range": { "end": { "character": 5, "line": 460 }, "start": { "character": 4, "line": 457 } }, "selectionRange": { "end": { "character": 18, "line": 458 }, "start": { "character": 7, "line": 458 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialOrd for PrefixComponent<'a>", "range": { "end": { "character": 1, "line": 461 }, "start": { "character": 0, "line": 455 } }, "selectionRange": { "end": { "character": 43, "line": 456 }, "start": { "character": 24, "line": 456 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Self) -> cmp::Ordering", "kind": 12, "name": "cmp", "range": { "end": { "character": 5, "line": 468 }, "start": { "character": 4, "line": 465 } }, "selectionRange": { "end": { "character": 10, "line": 466 }, "start": { "character": 7, "line": 466 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Ord for PrefixComponent<'_>", "range": { "end": { "character": 1, "line": 469 }, "start": { "character": 0, "line": 463 } }, "selectionRange": { "end": { "character": 32, "line": 464 }, "start": { "character": 13, "line": 464 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, h: &mut H)", "kind": 12, "name": "hash", "range": { "end": { "character": 5, "line": 475 }, "start": { "character": 4, "line": 473 } }, "selectionRange": { "end": { "character": 11, "line": 473 }, "start": { "character": 7, "line": 473 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Hash for PrefixComponent<'_>", "range": { "end": { "character": 1, "line": 476 }, "start": { "character": 0, "line": 471 } }, "selectionRange": { "end": { "character": 33, "line": 472 }, "start": { "character": 14, "line": 472 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "kind": 22, "name": "Prefix", "range": { "end": { "character": 77, "line": 510 }, "start": { "character": 4, "line": 503 } }, "selectionRange": { "end": { "character": 10, "line": 510 }, "start": { "character": 4, "line": 510 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "RootDir", "range": { "end": { "character": 11, "line": 516 }, "start": { "character": 4, "line": 512 } }, "selectionRange": { "end": { "character": 11, "line": 516 }, "start": { "character": 4, "line": 516 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "CurDir", "range": { "end": { "character": 10, "line": 520 }, "start": { "character": 4, "line": 518 } }, "selectionRange": { "end": { "character": 10, "line": 520 }, "start": { "character": 4, "line": 520 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "ParentDir", "range": { "end": { "character": 13, "line": 524 }, "start": { "character": 4, "line": 522 } }, "selectionRange": { "end": { "character": 13, "line": 524 }, "start": { "character": 4, "line": 524 } }, "tags": [ ] }, { "deprecated": false, "kind": 22, "name": "Normal", "range": { "end": { "character": 67, "line": 531 }, "start": { "character": 4, "line": 526 } }, "selectionRange": { "end": { "character": 10, "line": 531 }, "start": { "character": 4, "line": 531 } }, "tags": [ ] } ], "deprecated": false, "kind": 10, "name": "Component", "range": { "end": { "character": 1, "line": 532 }, "start": { "character": 0, "line": 478 } }, "selectionRange": { "end": { "character": 18, "line": 502 }, "start": { "character": 9, "line": 502 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(self) -> &'a OsStr", "kind": 12, "name": "as_os_str", "range": { "end": { "character": 5, "line": 556 }, "start": { "character": 4, "line": 535 } }, "selectionRange": { "end": { "character": 20, "line": 548 }, "start": { "character": 11, "line": 548 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Component<'a>", "range": { "end": { "character": 1, "line": 557 }, "start": { "character": 0, "line": 534 } }, "selectionRange": { "end": { "character": 22, "line": 534 }, "start": { "character": 9, "line": 534 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &OsStr", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 564 }, "start": { "character": 4, "line": 561 } }, "selectionRange": { "end": { "character": 13, "line": 562 }, "start": { "character": 7, "line": 562 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Component<'_>", "range": { "end": { "character": 1, "line": 565 }, "start": { "character": 0, "line": 559 } }, "selectionRange": { "end": { "character": 35, "line": 560 }, "start": { "character": 22, "line": 560 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 572 }, "start": { "character": 4, "line": 569 } }, "selectionRange": { "end": { "character": 13, "line": 570 }, "start": { "character": 7, "line": 570 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Component<'_>", "range": { "end": { "character": 1, "line": 573 }, "start": { "character": 0, "line": 567 } }, "selectionRange": { "end": { "character": 34, "line": 568 }, "start": { "character": 21, "line": 568 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a [u8]", "kind": 8, "name": "path", "range": { "end": { "character": 18, "line": 598 }, "start": { "character": 4, "line": 597 } }, "selectionRange": { "end": { "character": 8, "line": 598 }, "start": { "character": 4, "line": 598 } }, "tags": [ ] }, { "deprecated": false, "detail": "Option>", "kind": 8, "name": "prefix", "range": { "end": { "character": 30, "line": 601 }, "start": { "character": 4, "line": 600 } }, "selectionRange": { "end": { "character": 10, "line": 601 }, "start": { "character": 4, "line": 601 } }, "tags": [ ] }, { "deprecated": false, "detail": "bool", "kind": 8, "name": "has_physical_root", "range": { "end": { "character": 27, "line": 606 }, "start": { "character": 4, "line": 603 } }, "selectionRange": { "end": { "character": 21, "line": 606 }, "start": { "character": 4, "line": 606 } }, "tags": [ ] }, { "deprecated": false, "detail": "State", "kind": 8, "name": "front", "range": { "end": { "character": 16, "line": 610 }, "start": { "character": 4, "line": 608 } }, "selectionRange": { "end": { "character": 9, "line": 610 }, "start": { "character": 4, "line": 610 } }, "tags": [ ] }, { "deprecated": false, "detail": "State", "kind": 8, "name": "back", "range": { "end": { "character": 15, "line": 611 }, "start": { "character": 4, "line": 611 } }, "selectionRange": { "end": { "character": 8, "line": 611 }, "start": { "character": 4, "line": 611 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "Components", "range": { "end": { "character": 1, "line": 612 }, "start": { "character": 0, "line": 575 } }, "selectionRange": { "end": { "character": 21, "line": 596 }, "start": { "character": 11, "line": 596 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Components<'a>", "kind": 8, "name": "inner", "range": { "end": { "character": 25, "line": 624 }, "start": { "character": 4, "line": 624 } }, "selectionRange": { "end": { "character": 9, "line": 624 }, "start": { "character": 4, "line": 624 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "Iter", "range": { "end": { "character": 1, "line": 625 }, "start": { "character": 0, "line": 614 } }, "selectionRange": { "end": { "character": 15, "line": 623 }, "start": { "character": 11, "line": 623 } }, "tags": [ ] }, { "children": [ { "children": [ { "deprecated": false, "kind": 23, "name": "DebugHelper", "range": { "end": { "character": 41, "line": 630 }, "start": { "character": 8, "line": 630 } }, "selectionRange": { "end": { "character": 26, "line": 630 }, "start": { "character": 15, "line": 630 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 13, "line": 635 }, "start": { "character": 12, "line": 633 } }, "selectionRange": { "end": { "character": 18, "line": 633 }, "start": { "character": 15, "line": 633 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for DebugHelper<'_>", "range": { "end": { "character": 9, "line": 636 }, "start": { "character": 8, "line": 632 } }, "selectionRange": { "end": { "character": 43, "line": 632 }, "start": { "character": 28, "line": 632 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 639 }, "start": { "character": 4, "line": 629 } }, "selectionRange": { "end": { "character": 10, "line": 629 }, "start": { "character": 7, "line": 629 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for Components<'_>", "range": { "end": { "character": 1, "line": 640 }, "start": { "character": 0, "line": 627 } }, "selectionRange": { "end": { "character": 34, "line": 628 }, "start": { "character": 20, "line": 628 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> usize", "kind": 12, "name": "prefix_len", "range": { "end": { "character": 5, "line": 647 }, "start": { "character": 4, "line": 643 } }, "selectionRange": { "end": { "character": 17, "line": 645 }, "start": { "character": 7, "line": 645 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "prefix_verbatim", "range": { "end": { "character": 5, "line": 652 }, "start": { "character": 4, "line": 649 } }, "selectionRange": { "end": { "character": 22, "line": 650 }, "start": { "character": 7, "line": 650 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> usize", "kind": 12, "name": "prefix_remaining", "range": { "end": { "character": 5, "line": 658 }, "start": { "character": 4, "line": 654 } }, "selectionRange": { "end": { "character": 23, "line": 656 }, "start": { "character": 7, "line": 656 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> usize", "kind": 12, "name": "len_before_body", "range": { "end": { "character": 5, "line": 666 }, "start": { "character": 4, "line": 660 } }, "selectionRange": { "end": { "character": 22, "line": 662 }, "start": { "character": 7, "line": 662 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "finished", "range": { "end": { "character": 5, "line": 672 }, "start": { "character": 4, "line": 668 } }, "selectionRange": { "end": { "character": 15, "line": 670 }, "start": { "character": 7, "line": 670 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, b: u8) -> bool", "kind": 12, "name": "is_sep_byte", "range": { "end": { "character": 5, "line": 677 }, "start": { "character": 4, "line": 674 } }, "selectionRange": { "end": { "character": 18, "line": 675 }, "start": { "character": 7, "line": 675 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> &'a Path", "kind": 12, "name": "as_path", "range": { "end": { "character": 5, "line": 703 }, "start": { "character": 4, "line": 679 } }, "selectionRange": { "end": { "character": 18, "line": 694 }, "start": { "character": 11, "line": 694 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "has_root", "range": { "end": { "character": 5, "line": 716 }, "start": { "character": 4, "line": 705 } }, "selectionRange": { "end": { "character": 15, "line": 706 }, "start": { "character": 7, "line": 706 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "include_cur_dir", "range": { "end": { "character": 5, "line": 729 }, "start": { "character": 4, "line": 718 } }, "selectionRange": { "end": { "character": 22, "line": 719 }, "start": { "character": 7, "line": 719 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn<'b>(&self, comp: &'b [u8]) -> Option>", "kind": 12, "name": "parse_single_component", "range": { "end": { "character": 5, "line": 743 }, "start": { "character": 4, "line": 731 } }, "selectionRange": { "end": { "character": 36, "line": 733 }, "start": { "character": 14, "line": 733 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> (usize, Option>)", "kind": 12, "name": "parse_next_component", "range": { "end": { "character": 5, "line": 755 }, "start": { "character": 4, "line": 745 } }, "selectionRange": { "end": { "character": 27, "line": 747 }, "start": { "character": 7, "line": 747 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> (usize, Option>)", "kind": 12, "name": "parse_next_component_back", "range": { "end": { "character": 5, "line": 768 }, "start": { "character": 4, "line": 757 } }, "selectionRange": { "end": { "character": 32, "line": 759 }, "start": { "character": 7, "line": 759 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self)", "kind": 12, "name": "trim_left", "range": { "end": { "character": 5, "line": 780 }, "start": { "character": 4, "line": 770 } }, "selectionRange": { "end": { "character": 16, "line": 771 }, "start": { "character": 7, "line": 771 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self)", "kind": 12, "name": "trim_right", "range": { "end": { "character": 5, "line": 792 }, "start": { "character": 4, "line": 782 } }, "selectionRange": { "end": { "character": 17, "line": 783 }, "start": { "character": 7, "line": 783 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Components<'a>", "range": { "end": { "character": 1, "line": 793 }, "start": { "character": 0, "line": 642 } }, "selectionRange": { "end": { "character": 23, "line": 642 }, "start": { "character": 9, "line": 642 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 800 }, "start": { "character": 4, "line": 797 } }, "selectionRange": { "end": { "character": 13, "line": 798 }, "start": { "character": 7, "line": 798 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Components<'_>", "range": { "end": { "character": 1, "line": 801 }, "start": { "character": 0, "line": 795 } }, "selectionRange": { "end": { "character": 35, "line": 796 }, "start": { "character": 21, "line": 796 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &OsStr", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 808 }, "start": { "character": 4, "line": 805 } }, "selectionRange": { "end": { "character": 13, "line": 806 }, "start": { "character": 7, "line": 806 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Components<'_>", "range": { "end": { "character": 1, "line": 809 }, "start": { "character": 0, "line": 803 } }, "selectionRange": { "end": { "character": 36, "line": 804 }, "start": { "character": 22, "line": 804 } }, "tags": [ ] }, { "children": [ { "children": [ { "deprecated": false, "kind": 23, "name": "DebugHelper", "range": { "end": { "character": 41, "line": 814 }, "start": { "character": 8, "line": 814 } }, "selectionRange": { "end": { "character": 26, "line": 814 }, "start": { "character": 15, "line": 814 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 13, "line": 819 }, "start": { "character": 12, "line": 817 } }, "selectionRange": { "end": { "character": 18, "line": 817 }, "start": { "character": 15, "line": 817 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for DebugHelper<'_>", "range": { "end": { "character": 9, "line": 820 }, "start": { "character": 8, "line": 816 } }, "selectionRange": { "end": { "character": 43, "line": 816 }, "start": { "character": 28, "line": 816 } }, "tags": [ ] } ], "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 823 }, "start": { "character": 4, "line": 813 } }, "selectionRange": { "end": { "character": 10, "line": 813 }, "start": { "character": 7, "line": 813 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for Iter<'_>", "range": { "end": { "character": 1, "line": 824 }, "start": { "character": 0, "line": 811 } }, "selectionRange": { "end": { "character": 28, "line": 812 }, "start": { "character": 20, "line": 812 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &'a Path", "kind": 12, "name": "as_path", "range": { "end": { "character": 5, "line": 845 }, "start": { "character": 4, "line": 827 } }, "selectionRange": { "end": { "character": 18, "line": 843 }, "start": { "character": 11, "line": 843 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Iter<'a>", "range": { "end": { "character": 1, "line": 846 }, "start": { "character": 0, "line": 826 } }, "selectionRange": { "end": { "character": 17, "line": 826 }, "start": { "character": 9, "line": 826 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 853 }, "start": { "character": 4, "line": 850 } }, "selectionRange": { "end": { "character": 13, "line": 851 }, "start": { "character": 7, "line": 851 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Iter<'_>", "range": { "end": { "character": 1, "line": 854 }, "start": { "character": 0, "line": 848 } }, "selectionRange": { "end": { "character": 29, "line": 849 }, "start": { "character": 21, "line": 849 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &OsStr", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 861 }, "start": { "character": 4, "line": 858 } }, "selectionRange": { "end": { "character": 13, "line": 859 }, "start": { "character": 7, "line": 859 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Iter<'_>", "range": { "end": { "character": 1, "line": 862 }, "start": { "character": 0, "line": 856 } }, "selectionRange": { "end": { "character": 30, "line": 857 }, "start": { "character": 22, "line": 857 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a OsStr", "kind": 26, "name": "Item", "range": { "end": { "character": 26, "line": 866 }, "start": { "character": 4, "line": 866 } }, "selectionRange": { "end": { "character": 13, "line": 866 }, "start": { "character": 9, "line": 866 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> Option<&'a OsStr>", "kind": 12, "name": "next", "range": { "end": { "character": 5, "line": 871 }, "start": { "character": 4, "line": 868 } }, "selectionRange": { "end": { "character": 11, "line": 869 }, "start": { "character": 7, "line": 869 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Iterator for Iter<'a>", "range": { "end": { "character": 1, "line": 872 }, "start": { "character": 0, "line": 864 } }, "selectionRange": { "end": { "character": 30, "line": 865 }, "start": { "character": 22, "line": 865 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self) -> Option<&'a OsStr>", "kind": 12, "name": "next_back", "range": { "end": { "character": 5, "line": 879 }, "start": { "character": 4, "line": 876 } }, "selectionRange": { "end": { "character": 16, "line": 877 }, "start": { "character": 7, "line": 877 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl DoubleEndedIterator for Iter<'a>", "range": { "end": { "character": 1, "line": 880 }, "start": { "character": 0, "line": 874 } }, "selectionRange": { "end": { "character": 41, "line": 875 }, "start": { "character": 33, "line": 875 } }, "tags": [ ] }, { "deprecated": false, "kind": 19, "name": "impl FusedIterator for Iter<'_>", "range": { "end": { "character": 34, "line": 883 }, "start": { "character": 0, "line": 882 } }, "selectionRange": { "end": { "character": 31, "line": 883 }, "start": { "character": 23, "line": 883 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Component<'a>", "kind": 26, "name": "Item", "range": { "end": { "character": 30, "line": 887 }, "start": { "character": 4, "line": 887 } }, "selectionRange": { "end": { "character": 13, "line": 887 }, "start": { "character": 9, "line": 887 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> Option>", "kind": 12, "name": "next", "range": { "end": { "character": 5, "line": 935 }, "start": { "character": 4, "line": 889 } }, "selectionRange": { "end": { "character": 11, "line": 889 }, "start": { "character": 7, "line": 889 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Iterator for Components<'a>", "range": { "end": { "character": 1, "line": 936 }, "start": { "character": 0, "line": 885 } }, "selectionRange": { "end": { "character": 36, "line": 886 }, "start": { "character": 22, "line": 886 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self) -> Option>", "kind": 12, "name": "next_back", "range": { "end": { "character": 5, "line": 982 }, "start": { "character": 4, "line": 940 } }, "selectionRange": { "end": { "character": 16, "line": 940 }, "start": { "character": 7, "line": 940 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl DoubleEndedIterator for Components<'a>", "range": { "end": { "character": 1, "line": 983 }, "start": { "character": 0, "line": 938 } }, "selectionRange": { "end": { "character": 47, "line": 939 }, "start": { "character": 33, "line": 939 } }, "tags": [ ] }, { "deprecated": false, "kind": 19, "name": "impl FusedIterator for Components<'_>", "range": { "end": { "character": 40, "line": 986 }, "start": { "character": 0, "line": 985 } }, "selectionRange": { "end": { "character": 37, "line": 986 }, "start": { "character": 23, "line": 986 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Components<'a>) -> bool", "kind": 12, "name": "eq", "range": { "end": { "character": 5, "line": 1012 }, "start": { "character": 4, "line": 990 } }, "selectionRange": { "end": { "character": 9, "line": 991 }, "start": { "character": 7, "line": 991 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialEq for Components<'a>", "range": { "end": { "character": 1, "line": 1013 }, "start": { "character": 0, "line": 988 } }, "selectionRange": { "end": { "character": 37, "line": 989 }, "start": { "character": 23, "line": 989 } }, "tags": [ ] }, { "deprecated": false, "kind": 19, "name": "impl Eq for Components<'_>", "range": { "end": { "character": 29, "line": 1016 }, "start": { "character": 0, "line": 1015 } }, "selectionRange": { "end": { "character": 26, "line": 1016 }, "start": { "character": 12, "line": 1016 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Components<'a>) -> Option", "kind": 12, "name": "partial_cmp", "range": { "end": { "character": 5, "line": 1023 }, "start": { "character": 4, "line": 1020 } }, "selectionRange": { "end": { "character": 18, "line": 1021 }, "start": { "character": 7, "line": 1021 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialOrd for Components<'a>", "range": { "end": { "character": 1, "line": 1024 }, "start": { "character": 0, "line": 1018 } }, "selectionRange": { "end": { "character": 38, "line": 1019 }, "start": { "character": 24, "line": 1019 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Self) -> cmp::Ordering", "kind": 12, "name": "cmp", "range": { "end": { "character": 5, "line": 1031 }, "start": { "character": 4, "line": 1028 } }, "selectionRange": { "end": { "character": 10, "line": 1029 }, "start": { "character": 7, "line": 1029 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Ord for Components<'_>", "range": { "end": { "character": 1, "line": 1032 }, "start": { "character": 0, "line": 1026 } }, "selectionRange": { "end": { "character": 27, "line": 1027 }, "start": { "character": 13, "line": 1027 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(mut left: Components<'_>, mut right: Components<'_>) -> cmp::Ordering", "kind": 12, "name": "compare_components", "range": { "end": { "character": 1, "line": 1064 }, "start": { "character": 0, "line": 1034 } }, "selectionRange": { "end": { "character": 21, "line": 1034 }, "start": { "character": 3, "line": 1034 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Option<&'a Path>", "kind": 8, "name": "next", "range": { "end": { "character": 26, "line": 1088 }, "start": { "character": 4, "line": 1088 } }, "selectionRange": { "end": { "character": 8, "line": 1088 }, "start": { "character": 4, "line": 1088 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "Ancestors", "range": { "end": { "character": 1, "line": 1089 }, "start": { "character": 0, "line": 1066 } }, "selectionRange": { "end": { "character": 20, "line": 1087 }, "start": { "character": 11, "line": 1087 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a Path", "kind": 26, "name": "Item", "range": { "end": { "character": 25, "line": 1093 }, "start": { "character": 4, "line": 1093 } }, "selectionRange": { "end": { "character": 13, "line": 1093 }, "start": { "character": 9, "line": 1093 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> Option", "kind": 12, "name": "next", "range": { "end": { "character": 5, "line": 1100 }, "start": { "character": 4, "line": 1095 } }, "selectionRange": { "end": { "character": 11, "line": 1096 }, "start": { "character": 7, "line": 1096 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Iterator for Ancestors<'a>", "range": { "end": { "character": 1, "line": 1101 }, "start": { "character": 0, "line": 1091 } }, "selectionRange": { "end": { "character": 35, "line": 1092 }, "start": { "character": 22, "line": 1092 } }, "tags": [ ] }, { "deprecated": false, "kind": 19, "name": "impl FusedIterator for Ancestors<'_>", "range": { "end": { "character": 39, "line": 1104 }, "start": { "character": 0, "line": 1103 } }, "selectionRange": { "end": { "character": 36, "line": 1104 }, "start": { "character": 23, "line": 1104 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "OsString", "kind": 8, "name": "inner", "range": { "end": { "character": 19, "line": 1167 }, "start": { "character": 4, "line": 1167 } }, "selectionRange": { "end": { "character": 9, "line": 1167 }, "start": { "character": 4, "line": 1167 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "PathBuf", "range": { "end": { "character": 1, "line": 1168 }, "start": { "character": 0, "line": 1110 } }, "selectionRange": { "end": { "character": 18, "line": 1166 }, "start": { "character": 11, "line": 1166 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self) -> &mut Vec", "kind": 12, "name": "as_mut_vec", "range": { "end": { "character": 5, "line": 1174 }, "start": { "character": 4, "line": 1171 } }, "selectionRange": { "end": { "character": 17, "line": 1172 }, "start": { "character": 7, "line": 1172 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn() -> PathBuf", "kind": 12, "name": "new", "range": { "end": { "character": 5, "line": 1190 }, "start": { "character": 4, "line": 1176 } }, "selectionRange": { "end": { "character": 14, "line": 1188 }, "start": { "character": 11, "line": 1188 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(capacity: usize) -> PathBuf", "kind": 12, "name": "with_capacity", "range": { "end": { "character": 5, "line": 1215 }, "start": { "character": 4, "line": 1192 } }, "selectionRange": { "end": { "character": 24, "line": 1213 }, "start": { "character": 11, "line": 1213 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_path", "range": { "end": { "character": 5, "line": 1232 }, "start": { "character": 4, "line": 1217 } }, "selectionRange": { "end": { "character": 18, "line": 1230 }, "start": { "character": 11, "line": 1230 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&mut self, path: P)", "kind": 12, "name": "push", "range": { "end": { "character": 5, "line": 1274 }, "start": { "character": 4, "line": 1234 } }, "selectionRange": { "end": { "character": 15, "line": 1272 }, "start": { "character": 11, "line": 1272 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, path: &Path)", "kind": 12, "name": "_push", "range": { "end": { "character": 5, "line": 1345 }, "start": { "character": 4, "line": 1276 } }, "selectionRange": { "end": { "character": 12, "line": 1276 }, "start": { "character": 7, "line": 1276 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> bool", "kind": 12, "name": "pop", "range": { "end": { "character": 5, "line": 1375 }, "start": { "character": 4, "line": 1347 } }, "selectionRange": { "end": { "character": 14, "line": 1367 }, "start": { "character": 11, "line": 1367 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&mut self, file_name: S)", "kind": 12, "name": "set_file_name", "range": { "end": { "character": 5, "line": 1410 }, "start": { "character": 4, "line": 1377 } }, "selectionRange": { "end": { "character": 24, "line": 1408 }, "start": { "character": 11, "line": 1408 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, file_name: &OsStr)", "kind": 12, "name": "_set_file_name", "range": { "end": { "character": 5, "line": 1418 }, "start": { "character": 4, "line": 1412 } }, "selectionRange": { "end": { "character": 21, "line": 1412 }, "start": { "character": 7, "line": 1412 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&mut self, extension: S) -> bool", "kind": 12, "name": "set_extension", "range": { "end": { "character": 5, "line": 1474 }, "start": { "character": 4, "line": 1420 } }, "selectionRange": { "end": { "character": 24, "line": 1472 }, "start": { "character": 11, "line": 1472 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, extension: &OsStr) -> bool", "kind": 12, "name": "_set_extension", "range": { "end": { "character": 5, "line": 1497 }, "start": { "character": 4, "line": 1476 } }, "selectionRange": { "end": { "character": 21, "line": 1476 }, "start": { "character": 7, "line": 1476 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> &mut OsString", "kind": 12, "name": "as_mut_os_string", "range": { "end": { "character": 5, "line": 1520 }, "start": { "character": 4, "line": 1499 } }, "selectionRange": { "end": { "character": 27, "line": 1518 }, "start": { "character": 11, "line": 1518 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self) -> OsString", "kind": 12, "name": "into_os_string", "range": { "end": { "character": 5, "line": 1537 }, "start": { "character": 4, "line": 1522 } }, "selectionRange": { "end": { "character": 25, "line": 1535 }, "start": { "character": 11, "line": 1535 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self) -> Box", "kind": 12, "name": "into_boxed_path", "range": { "end": { "character": 5, "line": 1546 }, "start": { "character": 4, "line": 1539 } }, "selectionRange": { "end": { "character": 26, "line": 1543 }, "start": { "character": 11, "line": 1543 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> usize", "kind": 12, "name": "capacity", "range": { "end": { "character": 5, "line": 1556 }, "start": { "character": 4, "line": 1548 } }, "selectionRange": { "end": { "character": 19, "line": 1554 }, "start": { "character": 11, "line": 1554 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self)", "kind": 12, "name": "clear", "range": { "end": { "character": 5, "line": 1565 }, "start": { "character": 4, "line": 1558 } }, "selectionRange": { "end": { "character": 16, "line": 1563 }, "start": { "character": 11, "line": 1563 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, additional: usize)", "kind": 12, "name": "reserve", "range": { "end": { "character": 5, "line": 1574 }, "start": { "character": 4, "line": 1567 } }, "selectionRange": { "end": { "character": 18, "line": 1572 }, "start": { "character": 11, "line": 1572 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, additional: usize) -> Result<(), TryReserveError>", "kind": 12, "name": "try_reserve", "range": { "end": { "character": 5, "line": 1583 }, "start": { "character": 4, "line": 1576 } }, "selectionRange": { "end": { "character": 22, "line": 1581 }, "start": { "character": 11, "line": 1581 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, additional: usize)", "kind": 12, "name": "reserve_exact", "range": { "end": { "character": 5, "line": 1592 }, "start": { "character": 4, "line": 1585 } }, "selectionRange": { "end": { "character": 24, "line": 1590 }, "start": { "character": 11, "line": 1590 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, additional: usize) -> Result<(), TryReserveError>", "kind": 12, "name": "try_reserve_exact", "range": { "end": { "character": 5, "line": 1601 }, "start": { "character": 4, "line": 1594 } }, "selectionRange": { "end": { "character": 28, "line": 1599 }, "start": { "character": 11, "line": 1599 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self)", "kind": 12, "name": "shrink_to_fit", "range": { "end": { "character": 5, "line": 1610 }, "start": { "character": 4, "line": 1603 } }, "selectionRange": { "end": { "character": 24, "line": 1608 }, "start": { "character": 11, "line": 1608 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, min_capacity: usize)", "kind": 12, "name": "shrink_to", "range": { "end": { "character": 5, "line": 1619 }, "start": { "character": 4, "line": 1612 } }, "selectionRange": { "end": { "character": 20, "line": 1617 }, "start": { "character": 11, "line": 1617 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PathBuf", "range": { "end": { "character": 1, "line": 1620 }, "start": { "character": 0, "line": 1170 } }, "selectionRange": { "end": { "character": 12, "line": 1170 }, "start": { "character": 5, "line": 1170 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> Self", "kind": 12, "name": "clone", "range": { "end": { "character": 5, "line": 1627 }, "start": { "character": 4, "line": 1624 } }, "selectionRange": { "end": { "character": 12, "line": 1625 }, "start": { "character": 7, "line": 1625 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, source: &Self)", "kind": 12, "name": "clone_from", "range": { "end": { "character": 5, "line": 1632 }, "start": { "character": 4, "line": 1629 } }, "selectionRange": { "end": { "character": 17, "line": 1630 }, "start": { "character": 7, "line": 1630 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Clone for PathBuf", "range": { "end": { "character": 1, "line": 1633 }, "start": { "character": 0, "line": 1622 } }, "selectionRange": { "end": { "character": 22, "line": 1623 }, "start": { "character": 15, "line": 1623 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(path: &Path) -> Box", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1644 }, "start": { "character": 4, "line": 1637 } }, "selectionRange": { "end": { "character": 11, "line": 1640 }, "start": { "character": 7, "line": 1640 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From<&Path> for Box", "range": { "end": { "character": 1, "line": 1645 }, "start": { "character": 0, "line": 1635 } }, "selectionRange": { "end": { "character": 30, "line": 1636 }, "start": { "character": 21, "line": 1636 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(cow: Cow<'_, Path>) -> Box", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1658 }, "start": { "character": 4, "line": 1649 } }, "selectionRange": { "end": { "character": 11, "line": 1653 }, "start": { "character": 7, "line": 1653 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From> for Box", "range": { "end": { "character": 1, "line": 1659 }, "start": { "character": 0, "line": 1647 } }, "selectionRange": { "end": { "character": 38, "line": 1648 }, "start": { "character": 29, "line": 1648 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(boxed: Box) -> PathBuf", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1669 }, "start": { "character": 4, "line": 1663 } }, "selectionRange": { "end": { "character": 11, "line": 1667 }, "start": { "character": 7, "line": 1667 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From> for PathBuf", "range": { "end": { "character": 1, "line": 1670 }, "start": { "character": 0, "line": 1661 } }, "selectionRange": { "end": { "character": 32, "line": 1662 }, "start": { "character": 25, "line": 1662 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: PathBuf) -> Box", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1681 }, "start": { "character": 4, "line": 1674 } }, "selectionRange": { "end": { "character": 11, "line": 1679 }, "start": { "character": 7, "line": 1679 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for Box", "range": { "end": { "character": 1, "line": 1682 }, "start": { "character": 0, "line": 1672 } }, "selectionRange": { "end": { "character": 32, "line": 1673 }, "start": { "character": 23, "line": 1673 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> Self", "kind": 12, "name": "clone", "range": { "end": { "character": 5, "line": 1689 }, "start": { "character": 4, "line": 1686 } }, "selectionRange": { "end": { "character": 12, "line": 1687 }, "start": { "character": 7, "line": 1687 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Clone for Box", "range": { "end": { "character": 1, "line": 1690 }, "start": { "character": 0, "line": 1684 } }, "selectionRange": { "end": { "character": 24, "line": 1685 }, "start": { "character": 15, "line": 1685 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: &T) -> PathBuf", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1700 }, "start": { "character": 4, "line": 1694 } }, "selectionRange": { "end": { "character": 11, "line": 1698 }, "start": { "character": 7, "line": 1698 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From<&T> for PathBuf", "range": { "end": { "character": 1, "line": 1701 }, "start": { "character": 0, "line": 1692 } }, "selectionRange": { "end": { "character": 51, "line": 1693 }, "start": { "character": 44, "line": 1693 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: OsString) -> PathBuf", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1711 }, "start": { "character": 4, "line": 1705 } }, "selectionRange": { "end": { "character": 11, "line": 1709 }, "start": { "character": 7, "line": 1709 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for PathBuf", "range": { "end": { "character": 1, "line": 1712 }, "start": { "character": 0, "line": 1703 } }, "selectionRange": { "end": { "character": 31, "line": 1704 }, "start": { "character": 24, "line": 1704 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(path_buf: PathBuf) -> OsString", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1722 }, "start": { "character": 4, "line": 1716 } }, "selectionRange": { "end": { "character": 11, "line": 1720 }, "start": { "character": 7, "line": 1720 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for OsString", "range": { "end": { "character": 1, "line": 1723 }, "start": { "character": 0, "line": 1714 } }, "selectionRange": { "end": { "character": 31, "line": 1715 }, "start": { "character": 23, "line": 1715 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: String) -> PathBuf", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1733 }, "start": { "character": 4, "line": 1727 } }, "selectionRange": { "end": { "character": 11, "line": 1731 }, "start": { "character": 7, "line": 1731 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for PathBuf", "range": { "end": { "character": 1, "line": 1734 }, "start": { "character": 0, "line": 1725 } }, "selectionRange": { "end": { "character": 29, "line": 1726 }, "start": { "character": 22, "line": 1726 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "core::convert::Infallible", "kind": 26, "name": "Err", "range": { "end": { "character": 41, "line": 1738 }, "start": { "character": 4, "line": 1738 } }, "selectionRange": { "end": { "character": 12, "line": 1738 }, "start": { "character": 9, "line": 1738 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(s: &str) -> Result", "kind": 12, "name": "from_str", "range": { "end": { "character": 5, "line": 1743 }, "start": { "character": 4, "line": 1740 } }, "selectionRange": { "end": { "character": 15, "line": 1741 }, "start": { "character": 7, "line": 1741 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl FromStr for PathBuf", "range": { "end": { "character": 1, "line": 1744 }, "start": { "character": 0, "line": 1736 } }, "selectionRange": { "end": { "character": 24, "line": 1737 }, "start": { "character": 17, "line": 1737 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn>(iter: I) -> PathBuf", "kind": 12, "name": "from_iter", "range": { "end": { "character": 5, "line": 1752 }, "start": { "character": 4, "line": 1748 } }, "selectionRange": { "end": { "character": 16, "line": 1748 }, "start": { "character": 7, "line": 1748 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl FromIterator

for PathBuf", "range": { "end": { "character": 1, "line": 1753 }, "start": { "character": 0, "line": 1746 } }, "selectionRange": { "end": { "character": 48, "line": 1747 }, "start": { "character": 41, "line": 1747 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn>(&mut self, iter: I)", "kind": 12, "name": "extend", "range": { "end": { "character": 5, "line": 1759 }, "start": { "character": 4, "line": 1757 } }, "selectionRange": { "end": { "character": 13, "line": 1757 }, "start": { "character": 7, "line": 1757 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self, p: P)", "kind": 12, "name": "extend_one", "range": { "end": { "character": 5, "line": 1764 }, "start": { "character": 4, "line": 1761 } }, "selectionRange": { "end": { "character": 17, "line": 1762 }, "start": { "character": 7, "line": 1762 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Extend

for PathBuf", "range": { "end": { "character": 1, "line": 1765 }, "start": { "character": 0, "line": 1755 } }, "selectionRange": { "end": { "character": 42, "line": 1756 }, "start": { "character": 35, "line": 1756 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 1771 }, "start": { "character": 4, "line": 1769 } }, "selectionRange": { "end": { "character": 10, "line": 1769 }, "start": { "character": 7, "line": 1769 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for PathBuf", "range": { "end": { "character": 1, "line": 1772 }, "start": { "character": 0, "line": 1767 } }, "selectionRange": { "end": { "character": 27, "line": 1768 }, "start": { "character": 20, "line": 1768 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "Path", "kind": 26, "name": "Target", "range": { "end": { "character": 23, "line": 1776 }, "start": { "character": 4, "line": 1776 } }, "selectionRange": { "end": { "character": 15, "line": 1776 }, "start": { "character": 9, "line": 1776 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "deref", "range": { "end": { "character": 5, "line": 1780 }, "start": { "character": 4, "line": 1777 } }, "selectionRange": { "end": { "character": 12, "line": 1778 }, "start": { "character": 7, "line": 1778 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl ops::Deref for PathBuf", "range": { "end": { "character": 1, "line": 1781 }, "start": { "character": 0, "line": 1774 } }, "selectionRange": { "end": { "character": 27, "line": 1775 }, "start": { "character": 20, "line": 1775 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&mut self) -> &mut Path", "kind": 12, "name": "deref_mut", "range": { "end": { "character": 5, "line": 1788 }, "start": { "character": 4, "line": 1785 } }, "selectionRange": { "end": { "character": 16, "line": 1786 }, "start": { "character": 7, "line": 1786 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl ops::DerefMut for PathBuf", "range": { "end": { "character": 1, "line": 1789 }, "start": { "character": 0, "line": 1783 } }, "selectionRange": { "end": { "character": 30, "line": 1784 }, "start": { "character": 23, "line": 1784 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "borrow", "range": { "end": { "character": 5, "line": 1796 }, "start": { "character": 4, "line": 1793 } }, "selectionRange": { "end": { "character": 13, "line": 1794 }, "start": { "character": 7, "line": 1794 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Borrow for PathBuf", "range": { "end": { "character": 1, "line": 1797 }, "start": { "character": 0, "line": 1791 } }, "selectionRange": { "end": { "character": 29, "line": 1792 }, "start": { "character": 22, "line": 1792 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn() -> Self", "kind": 12, "name": "default", "range": { "end": { "character": 5, "line": 1804 }, "start": { "character": 4, "line": 1801 } }, "selectionRange": { "end": { "character": 14, "line": 1802 }, "start": { "character": 7, "line": 1802 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Default for PathBuf", "range": { "end": { "character": 1, "line": 1805 }, "start": { "character": 0, "line": 1799 } }, "selectionRange": { "end": { "character": 24, "line": 1800 }, "start": { "character": 17, "line": 1800 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: &'a Path) -> Cow<'a, Path>", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1816 }, "start": { "character": 4, "line": 1809 } }, "selectionRange": { "end": { "character": 11, "line": 1814 }, "start": { "character": 7, "line": 1814 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From<&'a Path> for Cow<'a, Path>", "range": { "end": { "character": 1, "line": 1817 }, "start": { "character": 0, "line": 1807 } }, "selectionRange": { "end": { "character": 41, "line": 1808 }, "start": { "character": 28, "line": 1808 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: PathBuf) -> Cow<'a, Path>", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1828 }, "start": { "character": 4, "line": 1821 } }, "selectionRange": { "end": { "character": 11, "line": 1826 }, "start": { "character": 7, "line": 1826 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for Cow<'a, Path>", "range": { "end": { "character": 1, "line": 1829 }, "start": { "character": 0, "line": 1819 } }, "selectionRange": { "end": { "character": 40, "line": 1820 }, "start": { "character": 27, "line": 1820 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: &'a PathBuf) -> Cow<'a, Path>", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1840 }, "start": { "character": 4, "line": 1833 } }, "selectionRange": { "end": { "character": 11, "line": 1838 }, "start": { "character": 7, "line": 1838 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From<&'a PathBuf> for Cow<'a, Path>", "range": { "end": { "character": 1, "line": 1841 }, "start": { "character": 0, "line": 1831 } }, "selectionRange": { "end": { "character": 44, "line": 1832 }, "start": { "character": 31, "line": 1832 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(p: Cow<'a, Path>) -> Self", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1851 }, "start": { "character": 4, "line": 1845 } }, "selectionRange": { "end": { "character": 11, "line": 1849 }, "start": { "character": 7, "line": 1849 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From> for PathBuf", "range": { "end": { "character": 1, "line": 1852 }, "start": { "character": 0, "line": 1843 } }, "selectionRange": { "end": { "character": 40, "line": 1844 }, "start": { "character": 33, "line": 1844 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: PathBuf) -> Arc", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1862 }, "start": { "character": 4, "line": 1856 } }, "selectionRange": { "end": { "character": 11, "line": 1859 }, "start": { "character": 7, "line": 1859 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for Arc", "range": { "end": { "character": 1, "line": 1863 }, "start": { "character": 0, "line": 1854 } }, "selectionRange": { "end": { "character": 32, "line": 1855 }, "start": { "character": 23, "line": 1855 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: &Path) -> Arc", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1872 }, "start": { "character": 4, "line": 1867 } }, "selectionRange": { "end": { "character": 11, "line": 1869 }, "start": { "character": 7, "line": 1869 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From<&Path> for Arc", "range": { "end": { "character": 1, "line": 1873 }, "start": { "character": 0, "line": 1865 } }, "selectionRange": { "end": { "character": 30, "line": 1866 }, "start": { "character": 21, "line": 1866 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: PathBuf) -> Rc", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1883 }, "start": { "character": 4, "line": 1877 } }, "selectionRange": { "end": { "character": 11, "line": 1880 }, "start": { "character": 7, "line": 1880 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From for Rc", "range": { "end": { "character": 1, "line": 1884 }, "start": { "character": 0, "line": 1875 } }, "selectionRange": { "end": { "character": 31, "line": 1876 }, "start": { "character": 23, "line": 1876 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: &Path) -> Rc", "kind": 12, "name": "from", "range": { "end": { "character": 5, "line": 1893 }, "start": { "character": 4, "line": 1888 } }, "selectionRange": { "end": { "character": 11, "line": 1890 }, "start": { "character": 7, "line": 1890 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl From<&Path> for Rc", "range": { "end": { "character": 1, "line": 1894 }, "start": { "character": 0, "line": 1886 } }, "selectionRange": { "end": { "character": 29, "line": 1887 }, "start": { "character": 21, "line": 1887 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "PathBuf", "kind": 26, "name": "Owned", "range": { "end": { "character": 25, "line": 1898 }, "start": { "character": 4, "line": 1898 } }, "selectionRange": { "end": { "character": 14, "line": 1898 }, "start": { "character": 9, "line": 1898 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> PathBuf", "kind": 12, "name": "to_owned", "range": { "end": { "character": 5, "line": 1902 }, "start": { "character": 4, "line": 1899 } }, "selectionRange": { "end": { "character": 15, "line": 1900 }, "start": { "character": 7, "line": 1900 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, target: &mut PathBuf)", "kind": 12, "name": "clone_into", "range": { "end": { "character": 5, "line": 1906 }, "start": { "character": 4, "line": 1903 } }, "selectionRange": { "end": { "character": 17, "line": 1904 }, "start": { "character": 7, "line": 1904 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl ToOwned for Path", "range": { "end": { "character": 1, "line": 1907 }, "start": { "character": 0, "line": 1896 } }, "selectionRange": { "end": { "character": 21, "line": 1897 }, "start": { "character": 17, "line": 1897 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &PathBuf) -> bool", "kind": 12, "name": "eq", "range": { "end": { "character": 5, "line": 1914 }, "start": { "character": 4, "line": 1911 } }, "selectionRange": { "end": { "character": 9, "line": 1912 }, "start": { "character": 7, "line": 1912 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialEq for PathBuf", "range": { "end": { "character": 1, "line": 1915 }, "start": { "character": 0, "line": 1909 } }, "selectionRange": { "end": { "character": 26, "line": 1910 }, "start": { "character": 19, "line": 1910 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, h: &mut H)", "kind": 12, "name": "hash", "range": { "end": { "character": 5, "line": 1921 }, "start": { "character": 4, "line": 1919 } }, "selectionRange": { "end": { "character": 11, "line": 1919 }, "start": { "character": 7, "line": 1919 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Hash for PathBuf", "range": { "end": { "character": 1, "line": 1922 }, "start": { "character": 0, "line": 1917 } }, "selectionRange": { "end": { "character": 21, "line": 1918 }, "start": { "character": 14, "line": 1918 } }, "tags": [ ] }, { "deprecated": false, "kind": 19, "name": "impl Eq for PathBuf", "range": { "end": { "character": 22, "line": 1925 }, "start": { "character": 0, "line": 1924 } }, "selectionRange": { "end": { "character": 19, "line": 1925 }, "start": { "character": 12, "line": 1925 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &PathBuf) -> Option", "kind": 12, "name": "partial_cmp", "range": { "end": { "character": 5, "line": 1932 }, "start": { "character": 4, "line": 1929 } }, "selectionRange": { "end": { "character": 18, "line": 1930 }, "start": { "character": 7, "line": 1930 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialOrd for PathBuf", "range": { "end": { "character": 1, "line": 1933 }, "start": { "character": 0, "line": 1927 } }, "selectionRange": { "end": { "character": 27, "line": 1928 }, "start": { "character": 20, "line": 1928 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &PathBuf) -> cmp::Ordering", "kind": 12, "name": "cmp", "range": { "end": { "character": 5, "line": 1940 }, "start": { "character": 4, "line": 1937 } }, "selectionRange": { "end": { "character": 10, "line": 1938 }, "start": { "character": 7, "line": 1938 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Ord for PathBuf", "range": { "end": { "character": 1, "line": 1941 }, "start": { "character": 0, "line": 1935 } }, "selectionRange": { "end": { "character": 20, "line": 1936 }, "start": { "character": 13, "line": 1936 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &OsStr", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 1948 }, "start": { "character": 4, "line": 1945 } }, "selectionRange": { "end": { "character": 13, "line": 1946 }, "start": { "character": 7, "line": 1946 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for PathBuf", "range": { "end": { "character": 1, "line": 1949 }, "start": { "character": 0, "line": 1943 } }, "selectionRange": { "end": { "character": 29, "line": 1944 }, "start": { "character": 22, "line": 1944 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "OsStr", "kind": 8, "name": "inner", "range": { "end": { "character": 16, "line": 1992 }, "start": { "character": 4, "line": 1992 } }, "selectionRange": { "end": { "character": 9, "line": 1992 }, "start": { "character": 4, "line": 1992 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "Path", "range": { "end": { "character": 1, "line": 1993 }, "start": { "character": 0, "line": 1951 } }, "selectionRange": { "end": { "character": 15, "line": 1991 }, "start": { "character": 11, "line": 1991 } }, "tags": [ ] }, { "deprecated": false, "kind": 23, "name": "StripPrefixError", "range": { "end": { "character": 32, "line": 2003 }, "start": { "character": 0, "line": 1995 } }, "selectionRange": { "end": { "character": 27, "line": 2003 }, "start": { "character": 11, "line": 2003 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(s: &[u8]) -> &Path", "kind": 12, "name": "from_u8_slice", "range": { "end": { "character": 5, "line": 2010 }, "start": { "character": 4, "line": 2006 } }, "selectionRange": { "end": { "character": 27, "line": 2008 }, "start": { "character": 14, "line": 2008 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> &[u8]", "kind": 12, "name": "as_u8_slice", "range": { "end": { "character": 5, "line": 2014 }, "start": { "character": 4, "line": 2011 } }, "selectionRange": { "end": { "character": 18, "line": 2012 }, "start": { "character": 7, "line": 2012 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn + ?Sized>(s: &S) -> &Path", "kind": 12, "name": "new", "range": { "end": { "character": 5, "line": 2041 }, "start": { "character": 4, "line": 2016 } }, "selectionRange": { "end": { "character": 14, "line": 2039 }, "start": { "character": 11, "line": 2039 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(inner: &mut OsStr) -> &mut Path", "kind": 12, "name": "from_inner_mut", "range": { "end": { "character": 5, "line": 2047 }, "start": { "character": 4, "line": 2043 } }, "selectionRange": { "end": { "character": 21, "line": 2043 }, "start": { "character": 7, "line": 2043 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> &OsStr", "kind": 12, "name": "as_os_str", "range": { "end": { "character": 5, "line": 2064 }, "start": { "character": 4, "line": 2049 } }, "selectionRange": { "end": { "character": 20, "line": 2062 }, "start": { "character": 11, "line": 2062 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&mut self) -> &mut OsStr", "kind": 12, "name": "as_mut_os_str", "range": { "end": { "character": 5, "line": 2085 }, "start": { "character": 4, "line": 2066 } }, "selectionRange": { "end": { "character": 24, "line": 2083 }, "start": { "character": 11, "line": 2083 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option<&str>", "kind": 12, "name": "to_str", "range": { "end": { "character": 5, "line": 2109 }, "start": { "character": 4, "line": 2087 } }, "selectionRange": { "end": { "character": 17, "line": 2107 }, "start": { "character": 11, "line": 2107 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Cow<'_, str>", "kind": 12, "name": "to_string_lossy", "range": { "end": { "character": 5, "line": 2137 }, "start": { "character": 4, "line": 2111 } }, "selectionRange": { "end": { "character": 26, "line": 2135 }, "start": { "character": 11, "line": 2135 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> PathBuf", "kind": 12, "name": "to_path_buf", "range": { "end": { "character": 5, "line": 2155 }, "start": { "character": 4, "line": 2139 } }, "selectionRange": { "end": { "character": 22, "line": 2153 }, "start": { "character": 11, "line": 2153 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_absolute", "range": { "end": { "character": 5, "line": 2185 }, "start": { "character": 4, "line": 2157 } }, "selectionRange": { "end": { "character": 22, "line": 2178 }, "start": { "character": 11, "line": 2178 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_relative", "range": { "end": { "character": 5, "line": 2205 }, "start": { "character": 4, "line": 2187 } }, "selectionRange": { "end": { "character": 22, "line": 2203 }, "start": { "character": 11, "line": 2203 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option>", "kind": 12, "name": "prefix", "range": { "end": { "character": 5, "line": 2209 }, "start": { "character": 4, "line": 2207 } }, "selectionRange": { "end": { "character": 13, "line": 2207 }, "start": { "character": 7, "line": 2207 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "has_root", "range": { "end": { "character": 5, "line": 2232 }, "start": { "character": 4, "line": 2211 } }, "selectionRange": { "end": { "character": 19, "line": 2230 }, "start": { "character": 11, "line": 2230 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option<&Path>", "kind": 12, "name": "parent", "range": { "end": { "character": 5, "line": 2274 }, "start": { "character": 4, "line": 2234 } }, "selectionRange": { "end": { "character": 17, "line": 2265 }, "start": { "character": 11, "line": 2265 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Ancestors<'_>", "kind": 12, "name": "ancestors", "range": { "end": { "character": 5, "line": 2308 }, "start": { "character": 4, "line": 2276 } }, "selectionRange": { "end": { "character": 20, "line": 2306 }, "start": { "character": 11, "line": 2306 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option<&OsStr>", "kind": 12, "name": "file_name", "range": { "end": { "character": 5, "line": 2338 }, "start": { "character": 4, "line": 2310 } }, "selectionRange": { "end": { "character": 20, "line": 2333 }, "start": { "character": 11, "line": 2333 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn

(&self, base: P) -> Result<&Path, StripPrefixError>", "kind": 12, "name": "strip_prefix", "range": { "end": { "character": 5, "line": 2374 }, "start": { "character": 4, "line": 2340 } }, "selectionRange": { "end": { "character": 23, "line": 2369 }, "start": { "character": 11, "line": 2369 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, base: &Path) -> Result<&Path, StripPrefixError>", "kind": 12, "name": "_strip_prefix", "range": { "end": { "character": 5, "line": 2380 }, "start": { "character": 4, "line": 2376 } }, "selectionRange": { "end": { "character": 20, "line": 2376 }, "start": { "character": 7, "line": 2376 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&self, base: P) -> bool", "kind": 12, "name": "starts_with", "range": { "end": { "character": 5, "line": 2408 }, "start": { "character": 4, "line": 2382 } }, "selectionRange": { "end": { "character": 22, "line": 2406 }, "start": { "character": 11, "line": 2406 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, base: &Path) -> bool", "kind": 12, "name": "_starts_with", "range": { "end": { "character": 5, "line": 2412 }, "start": { "character": 4, "line": 2410 } }, "selectionRange": { "end": { "character": 19, "line": 2410 }, "start": { "character": 7, "line": 2410 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&self, child: P) -> bool", "kind": 12, "name": "ends_with", "range": { "end": { "character": 5, "line": 2436 }, "start": { "character": 4, "line": 2414 } }, "selectionRange": { "end": { "character": 20, "line": 2434 }, "start": { "character": 11, "line": 2434 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, child: &Path) -> bool", "kind": 12, "name": "_ends_with", "range": { "end": { "character": 5, "line": 2440 }, "start": { "character": 4, "line": 2438 } }, "selectionRange": { "end": { "character": 17, "line": 2438 }, "start": { "character": 7, "line": 2438 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option<&OsStr>", "kind": 12, "name": "file_stem", "range": { "end": { "character": 5, "line": 2472 }, "start": { "character": 4, "line": 2442 } }, "selectionRange": { "end": { "character": 20, "line": 2470 }, "start": { "character": 11, "line": 2470 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option<&OsStr>", "kind": 12, "name": "file_prefix", "range": { "end": { "character": 5, "line": 2506 }, "start": { "character": 4, "line": 2474 } }, "selectionRange": { "end": { "character": 22, "line": 2504 }, "start": { "character": 11, "line": 2504 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Option<&OsStr>", "kind": 12, "name": "extension", "range": { "end": { "character": 5, "line": 2531 }, "start": { "character": 4, "line": 2508 } }, "selectionRange": { "end": { "character": 20, "line": 2529 }, "start": { "character": 11, "line": 2529 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&self, path: P) -> PathBuf", "kind": 12, "name": "join", "range": { "end": { "character": 5, "line": 2551 }, "start": { "character": 4, "line": 2533 } }, "selectionRange": { "end": { "character": 15, "line": 2549 }, "start": { "character": 11, "line": 2549 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, path: &Path) -> PathBuf", "kind": 12, "name": "_join", "range": { "end": { "character": 5, "line": 2557 }, "start": { "character": 4, "line": 2553 } }, "selectionRange": { "end": { "character": 12, "line": 2553 }, "start": { "character": 7, "line": 2553 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&self, file_name: S) -> PathBuf", "kind": 12, "name": "with_file_name", "range": { "end": { "character": 5, "line": 2579 }, "start": { "character": 4, "line": 2559 } }, "selectionRange": { "end": { "character": 25, "line": 2577 }, "start": { "character": 11, "line": 2577 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, file_name: &OsStr) -> PathBuf", "kind": 12, "name": "_with_file_name", "range": { "end": { "character": 5, "line": 2585 }, "start": { "character": 4, "line": 2581 } }, "selectionRange": { "end": { "character": 22, "line": 2581 }, "start": { "character": 7, "line": 2581 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(&self, extension: S) -> PathBuf", "kind": 12, "name": "with_extension", "range": { "end": { "character": 5, "line": 2607 }, "start": { "character": 4, "line": 2587 } }, "selectionRange": { "end": { "character": 25, "line": 2605 }, "start": { "character": 11, "line": 2605 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self, extension: &OsStr) -> PathBuf", "kind": 12, "name": "_with_extension", "range": { "end": { "character": 5, "line": 2631 }, "start": { "character": 4, "line": 2609 } }, "selectionRange": { "end": { "character": 22, "line": 2609 }, "start": { "character": 7, "line": 2609 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Components<'_>", "kind": 12, "name": "components", "range": { "end": { "character": 5, "line": 2677 }, "start": { "character": 4, "line": 2633 } }, "selectionRange": { "end": { "character": 21, "line": 2667 }, "start": { "character": 11, "line": 2667 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Iter<'_>", "kind": 12, "name": "iter", "range": { "end": { "character": 5, "line": 2703 }, "start": { "character": 4, "line": 2679 } }, "selectionRange": { "end": { "character": 15, "line": 2701 }, "start": { "character": 11, "line": 2701 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> Display<'_>", "kind": 12, "name": "display", "range": { "end": { "character": 5, "line": 2728 }, "start": { "character": 4, "line": 2705 } }, "selectionRange": { "end": { "character": 18, "line": 2726 }, "start": { "character": 11, "line": 2726 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> io::Result", "kind": 12, "name": "metadata", "range": { "end": { "character": 5, "line": 2750 }, "start": { "character": 4, "line": 2730 } }, "selectionRange": { "end": { "character": 19, "line": 2748 }, "start": { "character": 11, "line": 2748 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> io::Result", "kind": 12, "name": "symlink_metadata", "range": { "end": { "character": 5, "line": 2769 }, "start": { "character": 4, "line": 2752 } }, "selectionRange": { "end": { "character": 27, "line": 2767 }, "start": { "character": 11, "line": 2767 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> io::Result", "kind": 12, "name": "canonicalize", "range": { "end": { "character": 5, "line": 2788 }, "start": { "character": 4, "line": 2771 } }, "selectionRange": { "end": { "character": 23, "line": 2786 }, "start": { "character": 11, "line": 2786 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> io::Result", "kind": 12, "name": "read_link", "range": { "end": { "character": 5, "line": 2806 }, "start": { "character": 4, "line": 2790 } }, "selectionRange": { "end": { "character": 20, "line": 2804 }, "start": { "character": 11, "line": 2804 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> io::Result", "kind": 12, "name": "read_dir", "range": { "end": { "character": 5, "line": 2831 }, "start": { "character": 4, "line": 2808 } }, "selectionRange": { "end": { "character": 19, "line": 2829 }, "start": { "character": 11, "line": 2829 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "exists", "range": { "end": { "character": 5, "line": 2862 }, "start": { "character": 4, "line": 2833 } }, "selectionRange": { "end": { "character": 17, "line": 2860 }, "start": { "character": 11, "line": 2860 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> io::Result", "kind": 12, "name": "try_exists", "range": { "end": { "character": 5, "line": 2892 }, "start": { "character": 4, "line": 2864 } }, "selectionRange": { "end": { "character": 21, "line": 2890 }, "start": { "character": 11, "line": 2890 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_file", "range": { "end": { "character": 5, "line": 2925 }, "start": { "character": 4, "line": 2894 } }, "selectionRange": { "end": { "character": 18, "line": 2923 }, "start": { "character": 11, "line": 2923 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_dir", "range": { "end": { "character": 5, "line": 2952 }, "start": { "character": 4, "line": 2927 } }, "selectionRange": { "end": { "character": 17, "line": 2950 }, "start": { "character": 11, "line": 2950 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(&self) -> bool", "kind": 12, "name": "is_symlink", "range": { "end": { "character": 5, "line": 2984 }, "start": { "character": 4, "line": 2954 } }, "selectionRange": { "end": { "character": 21, "line": 2982 }, "start": { "character": 11, "line": 2982 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self: Box) -> PathBuf", "kind": 12, "name": "into_path_buf", "range": { "end": { "character": 5, "line": 2994 }, "start": { "character": 4, "line": 2986 } }, "selectionRange": { "end": { "character": 24, "line": 2990 }, "start": { "character": 11, "line": 2990 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Path", "range": { "end": { "character": 1, "line": 2995 }, "start": { "character": 0, "line": 2005 } }, "selectionRange": { "end": { "character": 9, "line": 2005 }, "start": { "character": 5, "line": 2005 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &OsStr", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3002 }, "start": { "character": 4, "line": 2999 } }, "selectionRange": { "end": { "character": 13, "line": 3000 }, "start": { "character": 7, "line": 3000 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Path", "range": { "end": { "character": 1, "line": 3003 }, "start": { "character": 0, "line": 2997 } }, "selectionRange": { "end": { "character": 26, "line": 2998 }, "start": { "character": 22, "line": 2998 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 3009 }, "start": { "character": 4, "line": 3007 } }, "selectionRange": { "end": { "character": 10, "line": 3007 }, "start": { "character": 7, "line": 3007 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for Path", "range": { "end": { "character": 1, "line": 3010 }, "start": { "character": 0, "line": 3005 } }, "selectionRange": { "end": { "character": 24, "line": 3006 }, "start": { "character": 20, "line": 3006 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a Path", "kind": 8, "name": "path", "range": { "end": { "character": 18, "line": 3034 }, "start": { "character": 4, "line": 3034 } }, "selectionRange": { "end": { "character": 8, "line": 3034 }, "start": { "character": 4, "line": 3034 } }, "tags": [ ] } ], "deprecated": false, "kind": 23, "name": "Display", "range": { "end": { "character": 1, "line": 3035 }, "start": { "character": 0, "line": 3012 } }, "selectionRange": { "end": { "character": 18, "line": 3033 }, "start": { "character": 11, "line": 3033 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 3041 }, "start": { "character": 4, "line": 3039 } }, "selectionRange": { "end": { "character": 10, "line": 3039 }, "start": { "character": 7, "line": 3039 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Debug for Display<'_>", "range": { "end": { "character": 1, "line": 3042 }, "start": { "character": 0, "line": 3037 } }, "selectionRange": { "end": { "character": 31, "line": 3038 }, "start": { "character": 20, "line": 3038 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 3048 }, "start": { "character": 4, "line": 3046 } }, "selectionRange": { "end": { "character": 10, "line": 3046 }, "start": { "character": 7, "line": 3046 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Display for Display<'_>", "range": { "end": { "character": 1, "line": 3049 }, "start": { "character": 0, "line": 3044 } }, "selectionRange": { "end": { "character": 33, "line": 3045 }, "start": { "character": 22, "line": 3045 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Path) -> bool", "kind": 12, "name": "eq", "range": { "end": { "character": 5, "line": 3056 }, "start": { "character": 4, "line": 3053 } }, "selectionRange": { "end": { "character": 9, "line": 3054 }, "start": { "character": 7, "line": 3054 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialEq for Path", "range": { "end": { "character": 1, "line": 3057 }, "start": { "character": 0, "line": 3051 } }, "selectionRange": { "end": { "character": 23, "line": 3052 }, "start": { "character": 19, "line": 3052 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, h: &mut H)", "kind": 12, "name": "hash", "range": { "end": { "character": 5, "line": 3107 }, "start": { "character": 4, "line": 3061 } }, "selectionRange": { "end": { "character": 11, "line": 3061 }, "start": { "character": 7, "line": 3061 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Hash for Path", "range": { "end": { "character": 1, "line": 3108 }, "start": { "character": 0, "line": 3059 } }, "selectionRange": { "end": { "character": 18, "line": 3060 }, "start": { "character": 14, "line": 3060 } }, "tags": [ ] }, { "deprecated": false, "kind": 19, "name": "impl Eq for Path", "range": { "end": { "character": 19, "line": 3111 }, "start": { "character": 0, "line": 3110 } }, "selectionRange": { "end": { "character": 16, "line": 3111 }, "start": { "character": 12, "line": 3111 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Path) -> Option", "kind": 12, "name": "partial_cmp", "range": { "end": { "character": 5, "line": 3118 }, "start": { "character": 4, "line": 3115 } }, "selectionRange": { "end": { "character": 18, "line": 3116 }, "start": { "character": 7, "line": 3116 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl PartialOrd for Path", "range": { "end": { "character": 1, "line": 3119 }, "start": { "character": 0, "line": 3113 } }, "selectionRange": { "end": { "character": 24, "line": 3114 }, "start": { "character": 20, "line": 3114 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, other: &Path) -> cmp::Ordering", "kind": 12, "name": "cmp", "range": { "end": { "character": 5, "line": 3126 }, "start": { "character": 4, "line": 3123 } }, "selectionRange": { "end": { "character": 10, "line": 3124 }, "start": { "character": 7, "line": 3124 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Ord for Path", "range": { "end": { "character": 1, "line": 3127 }, "start": { "character": 0, "line": 3121 } }, "selectionRange": { "end": { "character": 17, "line": 3122 }, "start": { "character": 13, "line": 3122 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3134 }, "start": { "character": 4, "line": 3131 } }, "selectionRange": { "end": { "character": 13, "line": 3132 }, "start": { "character": 7, "line": 3132 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Path", "range": { "end": { "character": 1, "line": 3135 }, "start": { "character": 0, "line": 3129 } }, "selectionRange": { "end": { "character": 25, "line": 3130 }, "start": { "character": 21, "line": 3130 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3142 }, "start": { "character": 4, "line": 3139 } }, "selectionRange": { "end": { "character": 13, "line": 3140 }, "start": { "character": 7, "line": 3140 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for OsStr", "range": { "end": { "character": 1, "line": 3143 }, "start": { "character": 0, "line": 3137 } }, "selectionRange": { "end": { "character": 26, "line": 3138 }, "start": { "character": 21, "line": 3138 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3150 }, "start": { "character": 4, "line": 3147 } }, "selectionRange": { "end": { "character": 13, "line": 3148 }, "start": { "character": 7, "line": 3148 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for Cow<'_, OsStr>", "range": { "end": { "character": 1, "line": 3151 }, "start": { "character": 0, "line": 3145 } }, "selectionRange": { "end": { "character": 35, "line": 3146 }, "start": { "character": 21, "line": 3146 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3158 }, "start": { "character": 4, "line": 3155 } }, "selectionRange": { "end": { "character": 13, "line": 3156 }, "start": { "character": 7, "line": 3156 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for OsString", "range": { "end": { "character": 1, "line": 3159 }, "start": { "character": 0, "line": 3153 } }, "selectionRange": { "end": { "character": 29, "line": 3154 }, "start": { "character": 21, "line": 3154 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3166 }, "start": { "character": 4, "line": 3163 } }, "selectionRange": { "end": { "character": 13, "line": 3164 }, "start": { "character": 7, "line": 3164 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for str", "range": { "end": { "character": 1, "line": 3167 }, "start": { "character": 0, "line": 3161 } }, "selectionRange": { "end": { "character": 24, "line": 3162 }, "start": { "character": 21, "line": 3162 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3174 }, "start": { "character": 4, "line": 3171 } }, "selectionRange": { "end": { "character": 13, "line": 3172 }, "start": { "character": 7, "line": 3172 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for String", "range": { "end": { "character": 1, "line": 3175 }, "start": { "character": 0, "line": 3169 } }, "selectionRange": { "end": { "character": 27, "line": 3170 }, "start": { "character": 21, "line": 3170 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &Path", "kind": 12, "name": "as_ref", "range": { "end": { "character": 5, "line": 3182 }, "start": { "character": 4, "line": 3179 } }, "selectionRange": { "end": { "character": 13, "line": 3180 }, "start": { "character": 7, "line": 3180 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl AsRef for PathBuf", "range": { "end": { "character": 1, "line": 3183 }, "start": { "character": 0, "line": 3177 } }, "selectionRange": { "end": { "character": 28, "line": 3178 }, "start": { "character": 21, "line": 3178 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a OsStr", "kind": 26, "name": "Item", "range": { "end": { "character": 26, "line": 3187 }, "start": { "character": 4, "line": 3187 } }, "selectionRange": { "end": { "character": 13, "line": 3187 }, "start": { "character": 9, "line": 3187 } }, "tags": [ ] }, { "deprecated": false, "detail": "Iter<'a>", "kind": 26, "name": "IntoIter", "range": { "end": { "character": 29, "line": 3188 }, "start": { "character": 4, "line": 3188 } }, "selectionRange": { "end": { "character": 17, "line": 3188 }, "start": { "character": 9, "line": 3188 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self) -> Iter<'a>", "kind": 12, "name": "into_iter", "range": { "end": { "character": 5, "line": 3192 }, "start": { "character": 4, "line": 3189 } }, "selectionRange": { "end": { "character": 16, "line": 3190 }, "start": { "character": 7, "line": 3190 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl IntoIterator for &'a PathBuf", "range": { "end": { "character": 1, "line": 3193 }, "start": { "character": 0, "line": 3185 } }, "selectionRange": { "end": { "character": 37, "line": 3186 }, "start": { "character": 26, "line": 3186 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "&'a OsStr", "kind": 26, "name": "Item", "range": { "end": { "character": 26, "line": 3197 }, "start": { "character": 4, "line": 3197 } }, "selectionRange": { "end": { "character": 13, "line": 3197 }, "start": { "character": 9, "line": 3197 } }, "tags": [ ] }, { "deprecated": false, "detail": "Iter<'a>", "kind": 26, "name": "IntoIter", "range": { "end": { "character": 29, "line": 3198 }, "start": { "character": 4, "line": 3198 } }, "selectionRange": { "end": { "character": 17, "line": 3198 }, "start": { "character": 9, "line": 3198 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn(self) -> Iter<'a>", "kind": 12, "name": "into_iter", "range": { "end": { "character": 5, "line": 3202 }, "start": { "character": 4, "line": 3199 } }, "selectionRange": { "end": { "character": 16, "line": 3200 }, "start": { "character": 7, "line": 3200 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl IntoIterator for &'a Path", "range": { "end": { "character": 1, "line": 3203 }, "start": { "character": 0, "line": 3195 } }, "selectionRange": { "end": { "character": 34, "line": 3196 }, "start": { "character": 26, "line": 3196 } }, "tags": [ ] }, { "deprecated": false, "kind": 12, "name": "impl_cmp", "range": { "end": { "character": 1, "line": 3239 }, "start": { "character": 0, "line": 3205 } }, "selectionRange": { "end": { "character": 21, "line": 3205 }, "start": { "character": 13, "line": 3205 } }, "tags": [ ] }, { "deprecated": false, "kind": 12, "name": "impl_cmp_os_str", "range": { "end": { "character": 1, "line": 3281 }, "start": { "character": 0, "line": 3247 } }, "selectionRange": { "end": { "character": 28, "line": 3247 }, "start": { "character": 13, "line": 3247 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result", "kind": 12, "name": "fmt", "range": { "end": { "character": 5, "line": 3303 }, "start": { "character": 4, "line": 3300 } }, "selectionRange": { "end": { "character": 10, "line": 3301 }, "start": { "character": 7, "line": 3301 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl fmt::Display for StripPrefixError", "range": { "end": { "character": 1, "line": 3304 }, "start": { "character": 0, "line": 3298 } }, "selectionRange": { "end": { "character": 38, "line": 3299 }, "start": { "character": 22, "line": 3299 } }, "tags": [ ] }, { "children": [ { "deprecated": false, "detail": "fn(&self) -> &str", "kind": 12, "name": "description", "range": { "end": { "character": 5, "line": 3311 }, "start": { "character": 4, "line": 3308 } }, "selectionRange": { "end": { "character": 18, "line": 3309 }, "start": { "character": 7, "line": 3309 } }, "tags": [ ] } ], "deprecated": false, "kind": 19, "name": "impl Error for StripPrefixError", "range": { "end": { "character": 1, "line": 3312 }, "start": { "character": 0, "line": 3306 } }, "selectionRange": { "end": { "character": 31, "line": 3307 }, "start": { "character": 15, "line": 3307 } }, "tags": [ ] }, { "deprecated": false, "detail": "fn>(path: P) -> io::Result", "kind": 12, "name": "absolute", "range": { "end": { "character": 1, "line": 3388 }, "start": { "character": 0, "line": 3314 } }, "selectionRange": { "end": { "character": 15, "line": 3381 }, "start": { "character": 7, "line": 3381 } }, "tags": [ ] } ] } 08:19:53.077 Server { "id": 9, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Roots Scanned" } } 08:19:53.077 Client { "id": 9, "jsonrpc": "2.0", "result": null } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "begin", "message": "0/137", "percentage": 0, "title": "Roots Scanned" } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "1/137", "percentage": 0 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "2/137", "percentage": 1 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "3/137", "percentage": 2 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "4/137", "percentage": 2 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "5/137", "percentage": 3 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "6/137", "percentage": 4 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "7/137", "percentage": 5 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "8/137", "percentage": 5 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "9/137", "percentage": 6 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "10/137", "percentage": 7 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "11/137", "percentage": 8 } } } 08:19:53.077 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "12/137", "percentage": 8 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "13/137", "percentage": 9 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "14/137", "percentage": 10 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "15/137", "percentage": 10 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "16/137", "percentage": 11 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "17/137", "percentage": 12 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "18/137", "percentage": 13 } } } 08:19:53.078 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "19/137", "percentage": 13 } } } 08:19:53.093 Server { "id": 10, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Loading" } } 08:19:53.093 Client { "id": 10, "jsonrpc": "2.0", "result": null } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "begin", "title": "Loading" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "report", "message": "/_/code/.cache_rust/debug/deps/libpaste-80750a7b564933e1.so" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "report", "message": "/_/code/.cache_rust/debug/deps/libproc_macro_hack-26f286fc4690c779.so" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "report", "message": "/_/code/.cache_rust/debug/deps/libconst_format_proc_macros-05189f7328357453.so" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "report", "message": "/_/code/.cache_rust/debug/deps/libpaste_impl-a59f8f739cb50bb4.so" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "report", "message": "/_/code/.cache_rust/debug/deps/libserde_derive-c476f5b720d611ad.so" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "cancellable": false, "kind": "report", "message": "/_/code/.cache_rust/debug/deps/libtrait_set-75fc88811a0fc0e6.so" } } } 08:19:53.093 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Loading", "value": { "kind": "end" } } } 08:19:53.100 Server { "id": 11, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Fetching" } } 08:19:53.100 Client { "id": 11, "jsonrpc": "2.0", "result": null } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "begin", "title": "Fetching" } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "20/137", "percentage": 14 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "21/137", "percentage": 15 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "22/137", "percentage": 16 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "23/137", "percentage": 16 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "24/137", "percentage": 17 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "25/137", "percentage": 18 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "26/137", "percentage": 18 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "27/137", "percentage": 19 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "28/137", "percentage": 20 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "29/137", "percentage": 21 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "30/137", "percentage": 21 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "31/137", "percentage": 22 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "32/137", "percentage": 23 } } } 08:19:53.100 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "33/137", "percentage": 24 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "34/137", "percentage": 24 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "35/137", "percentage": 25 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "36/137", "percentage": 26 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "37/137", "percentage": 27 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "38/137", "percentage": 27 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "39/137", "percentage": 28 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "40/137", "percentage": 29 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "41/137", "percentage": 29 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "42/137", "percentage": 30 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "43/137", "percentage": 31 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "44/137", "percentage": 32 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "45/137", "percentage": 32 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "46/137", "percentage": 33 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "47/137", "percentage": 34 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "48/137", "percentage": 35 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "49/137", "percentage": 35 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "50/137", "percentage": 36 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "51/137", "percentage": 37 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "52/137", "percentage": 37 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "53/137", "percentage": 38 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "54/137", "percentage": 39 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "55/137", "percentage": 40 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "56/137", "percentage": 40 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "57/137", "percentage": 41 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "58/137", "percentage": 42 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "59/137", "percentage": 43 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "60/137", "percentage": 43 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "61/137", "percentage": 44 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "62/137", "percentage": 45 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "63/137", "percentage": 45 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "64/137", "percentage": 46 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "65/137", "percentage": 47 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "66/137", "percentage": 48 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "67/137", "percentage": 48 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "68/137", "percentage": 49 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "69/137", "percentage": 50 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "70/137", "percentage": 51 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "71/137", "percentage": 51 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "72/137", "percentage": 52 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "73/137", "percentage": 53 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "74/137", "percentage": 54 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "75/137", "percentage": 54 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "76/137", "percentage": 55 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "77/137", "percentage": 56 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "78/137", "percentage": 56 } } } 08:19:53.101 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "79/137", "percentage": 57 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "80/137", "percentage": 58 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "81/137", "percentage": 59 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "82/137", "percentage": 59 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "83/137", "percentage": 60 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "84/137", "percentage": 61 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "85/137", "percentage": 62 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "86/137", "percentage": 62 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "87/137", "percentage": 63 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "88/137", "percentage": 64 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "89/137", "percentage": 64 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "90/137", "percentage": 65 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "91/137", "percentage": 66 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "92/137", "percentage": 67 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "93/137", "percentage": 67 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "94/137", "percentage": 68 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "95/137", "percentage": 69 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "96/137", "percentage": 70 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "97/137", "percentage": 70 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "98/137", "percentage": 71 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "99/137", "percentage": 72 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "100/137", "percentage": 72 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "101/137", "percentage": 73 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "102/137", "percentage": 74 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "103/137", "percentage": 75 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "104/137", "percentage": 75 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "105/137", "percentage": 76 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "106/137", "percentage": 77 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "107/137", "percentage": 78 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "108/137", "percentage": 78 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "109/137", "percentage": 79 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "110/137", "percentage": 80 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "111/137", "percentage": 81 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "112/137", "percentage": 81 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "113/137", "percentage": 82 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "114/137", "percentage": 83 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "115/137", "percentage": 83 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "116/137", "percentage": 84 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "117/137", "percentage": 85 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "118/137", "percentage": 86 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "119/137", "percentage": 86 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "120/137", "percentage": 87 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "121/137", "percentage": 88 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "122/137", "percentage": 89 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "123/137", "percentage": 89 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "124/137", "percentage": 90 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "125/137", "percentage": 91 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "126/137", "percentage": 91 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "127/137", "percentage": 92 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "128/137", "percentage": 93 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "129/137", "percentage": 94 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "130/137", "percentage": 94 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "131/137", "percentage": 95 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "132/137", "percentage": 96 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "133/137", "percentage": 97 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "134/137", "percentage": 97 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "135/137", "percentage": 98 } } } 08:19:53.111 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "cancellable": false, "kind": "report", "message": "136/137", "percentage": 99 } } } 08:19:53.132 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "report", "message": "metadata" } } } 08:19:53.145 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Roots Scanned", "value": { "kind": "end", "message": "137/137" } } } 08:19:53.311 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "kind": "end" } } } 08:19:53.311 Server { "id": 12, "jsonrpc": "2.0", "method": "workspace/semanticTokens/refresh" } 08:19:53.311 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{a0047238-fb91-4a75-b726-6e24d7225e2b}" } } 08:19:53.311 Client { "id": "{2611b0fb-37aa-4961-afa7-82ea314c57ca}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } } } 08:19:53.311 Client { "id": 12, "jsonrpc": "2.0", "result": null } 08:19:53.318 Server { "id": 13, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Fetching" } } 08:19:53.318 Client { "id": 13, "jsonrpc": "2.0", "result": null } 08:19:53.318 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "begin", "title": "Fetching" } } } 08:19:53.318 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{a0047238-fb91-4a75-b726-6e24d7225e2b}", "jsonrpc": "2.0" } 08:19:53.336 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "cancellable": false, "kind": "report", "message": "metadata" } } } 08:19:53.462 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Fetching", "value": { "kind": "end" } } } 08:19:53.462 Server { "id": 14, "jsonrpc": "2.0", "method": "workspace/semanticTokens/refresh" } 08:19:53.462 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{2611b0fb-37aa-4961-afa7-82ea314c57ca}" } } 08:19:53.462 Client { "id": "{f283556c-9ad8-4ac8-bc97-68431b46ccab}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/path.rs" } } } 08:19:53.462 Client { "id": 14, "jsonrpc": "2.0", "result": null } 08:19:53.471 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{2611b0fb-37aa-4961-afa7-82ea314c57ca}", "jsonrpc": "2.0" } 08:19:53.541 Server { "id": 15, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rust-analyzer/flycheck/0" } } 08:19:53.541 Client { "id": 15, "jsonrpc": "2.0", "result": null } 08:19:53.541 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rust-analyzer/flycheck/0", "value": { "cancellable": true, "kind": "begin", "title": "cargo check" } } } 08:19:53.624 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ { "code": "ambiguous_glob_reexports", "data": { "rendered": "warning: ambiguous glob re-exports\n --> shworld/shworld.rs:4:9\n |\n4 | pub use grafix_toolbox::*;\n | ^^^^^^^^^^^^^^^^^ the name `event` in the type namespace is first re-exported here\n...\n212 | use crossterm::*;\n | ------------ but the name `event` in the type namespace is also re-exported here\n |\n = note: `#[warn(ambiguous_glob_reexports)]` on by default\n\n" }, "message": "ambiguous glob re-exports\n`#[warn(ambiguous_glob_reexports)]` on by default", "range": { "end": { "character": 25, "line": 3 }, "start": { "character": 8, "line": 3 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 16, "line": 211 }, "start": { "character": 4, "line": 211 } }, "uri": "file:///_/code/rust/shworld/shworld.rs" }, "message": "but the name `event` in the type namespace is also re-exported here" } ], "severity": 2, "source": "rustc" }, { "code": "ambiguous_glob_reexports", "message": "but the name `event` in the type namespace is also re-exported here", "range": { "end": { "character": 16, "line": 211 }, "start": { "character": 4, "line": 211 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 25, "line": 3 }, "start": { "character": 8, "line": 3 } }, "uri": "file:///_/code/rust/shworld/shworld.rs" }, "message": "original diagnostic" } ], "severity": 4, "source": "rustc" } ], "uri": "file:///_/code/rust/shworld/shworld.rs" } } 08:19:53.632 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ { "code": "unused_mut", "data": { "rendered": "warning: variable does not need to be mutable\n --> shworld/test.rs:29:6\n |\n29 | let mut render = Shader::pure((mesh__2d_screen_vs, window_ps));\n | ----^^^^^^\n | |\n | help: remove this `mut`\n |\n = note: `#[warn(unused_mut)]` on by default\n\n" }, "message": "variable does not need to be mutable\n`#[warn(unused_mut)]` on by default", "range": { "end": { "character": 15, "line": 28 }, "start": { "character": 5, "line": 28 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 9, "line": 28 }, "start": { "character": 5, "line": 28 } }, "uri": "file:///_/code/rust/shworld/test.rs" }, "message": "remove this `mut`" } ], "severity": 2, "source": "rustc" }, { "code": "unused_mut", "message": "remove this `mut`", "range": { "end": { "character": 9, "line": 28 }, "start": { "character": 5, "line": 28 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 15, "line": 28 }, "start": { "character": 5, "line": 28 } }, "uri": "file:///_/code/rust/shworld/test.rs" }, "message": "original diagnostic" } ], "severity": 4, "source": "rustc" }, { "code": "unused_mut", "data": { "rendered": "warning: variable does not need to be mutable\n --> shworld/test.rs:68:6\n |\n68 | let mut gen_surf = EXPECT!(Shader::new((mesh__2d_screen_vs, \"ps_gen_surface\")));\n | ----^^^^^^^^\n | |\n | help: remove this `mut`\n\n" }, "message": "variable does not need to be mutable", "range": { "end": { "character": 17, "line": 67 }, "start": { "character": 5, "line": 67 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 9, "line": 67 }, "start": { "character": 5, "line": 67 } }, "uri": "file:///_/code/rust/shworld/test.rs" }, "message": "remove this `mut`" } ], "severity": 2, "source": "rustc" }, { "code": "unused_mut", "message": "remove this `mut`", "range": { "end": { "character": 9, "line": 67 }, "start": { "character": 5, "line": 67 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 17, "line": 67 }, "start": { "character": 5, "line": 67 } }, "uri": "file:///_/code/rust/shworld/test.rs" }, "message": "original diagnostic" } ], "severity": 4, "source": "rustc" }, { "code": "unused_mut", "data": { "rendered": "warning: variable does not need to be mutable\n --> shworld/test.rs:72:6\n |\n72 | let mut gen_planet = EXPECT!(Shader::new((mesh__2d_screen_vs, \"ps_gen_planetoid\")));\n | ----^^^^^^^^^^\n | |\n | help: remove this `mut`\n\n" }, "message": "variable does not need to be mutable", "range": { "end": { "character": 19, "line": 71 }, "start": { "character": 5, "line": 71 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 9, "line": 71 }, "start": { "character": 5, "line": 71 } }, "uri": "file:///_/code/rust/shworld/test.rs" }, "message": "remove this `mut`" } ], "severity": 2, "source": "rustc" }, { "code": "unused_mut", "message": "remove this `mut`", "range": { "end": { "character": 9, "line": 71 }, "start": { "character": 5, "line": 71 } }, "relatedInformation": [ { "location": { "range": { "end": { "character": 19, "line": 71 }, "start": { "character": 5, "line": 71 } }, "uri": "file:///_/code/rust/shworld/test.rs" }, "message": "original diagnostic" } ], "severity": 4, "source": "rustc" } ], "uri": "file:///_/code/rust/shworld/test.rs" } } 08:19:53.632 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rust-analyzer/flycheck/0", "value": { "kind": "end" } } } 08:19:55.526 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{fbeacb04-f92d-4ed7-bfbe-f3de41543977}" } } 08:19:55.526 Client { "id": "{a8b11980-fdf7-4a49-8b7c-6d94da456e64}", "jsonrpc": "2.0", "method": "textDocument/semanticTokens/full", "params": { "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:55.527 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{fbeacb04-f92d-4ed7-bfbe-f3de41543977}", "jsonrpc": "2.0" } 08:19:56.168 Server { "id": "{50580435-9d39-4ff5-86b0-d13409f7e4e3}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 18, "line": 1742 }, "start": { "character": 11, "line": 1742 } } }, { "range": { "end": { "character": 15, "line": 1710 }, "start": { "character": 8, "line": 1710 } } }, { "range": { "end": { "character": 15, "line": 1699 }, "start": { "character": 8, "line": 1699 } } }, { "range": { "end": { "character": 27, "line": 1625 }, "start": { "character": 23, "line": 1625 } } }, { "range": { "end": { "character": 32, "line": 1912 }, "start": { "character": 25, "line": 1912 } } }, { "range": { "end": { "character": 51, "line": 1693 }, "start": { "character": 44, "line": 1693 } } }, { "range": { "end": { "character": 44, "line": 1173 }, "start": { "character": 37, "line": 1173 } } }, { "range": { "end": { "character": 27, "line": 1775 }, "start": { "character": 20, "line": 1775 } } }, { "range": { "end": { "character": 15, "line": 1189 }, "start": { "character": 8, "line": 1189 } } }, { "range": { "end": { "character": 27, "line": 1768 }, "start": { "character": 20, "line": 1768 } } }, { "range": { "end": { "character": 17, "line": 1673 }, "start": { "character": 10, "line": 1673 } } }, { "range": { "end": { "character": 45, "line": 1904 }, "start": { "character": 38, "line": 1904 } } }, { "range": { "end": { "character": 19, "line": 1925 }, "start": { "character": 12, "line": 1925 } } }, { "range": { "end": { "character": 58, "line": 2549 }, "start": { "character": 51, "line": 2549 } } }, { "range": { "end": { "character": 59, "line": 2581 }, "start": { "character": 52, "line": 2581 } } }, { "range": { "end": { "character": 39, "line": 1741 }, "start": { "character": 35, "line": 1741 } } }, { "range": { "end": { "character": 42, "line": 1756 }, "start": { "character": 35, "line": 1756 } } }, { "range": { "end": { "character": 52, "line": 1213 }, "start": { "character": 45, "line": 1213 } } }, { "range": { "end": { "character": 29, "line": 1720 }, "start": { "character": 22, "line": 1720 } } }, { "range": { "end": { "character": 28, "line": 3178 }, "start": { "character": 21, "line": 3178 } } }, { "range": { "end": { "character": 63, "line": 1748 }, "start": { "character": 56, "line": 1748 } } }, { "range": { "end": { "character": 15, "line": 1214 }, "start": { "character": 8, "line": 1214 } } }, { "range": { "end": { "character": 12, "line": 1170 }, "start": { "character": 5, "line": 1170 } } }, { "range": { "end": { "character": 15, "line": 1803 }, "start": { "character": 8, "line": 1803 } } }, { "range": { "end": { "character": 29, "line": 1726 }, "start": { "character": 22, "line": 1726 } } }, { "range": { "end": { "character": 24, "line": 1800 }, "start": { "character": 17, "line": 1800 } } }, { "range": { "end": { "character": 24, "line": 1898 }, "start": { "character": 17, "line": 1898 } } }, { "range": { "end": { "character": 29, "line": 1944 }, "start": { "character": 22, "line": 1944 } } }, { "range": { "end": { "character": 24, "line": 1802 }, "start": { "character": 20, "line": 1802 } } }, { "range": { "end": { "character": 40, "line": 1667 }, "start": { "character": 33, "line": 1667 } } }, { "range": { "end": { "character": 62, "line": 3381 }, "start": { "character": 55, "line": 3381 } } }, { "range": { "end": { "character": 15, "line": 1626 }, "start": { "character": 8, "line": 1626 } } }, { "range": { "end": { "character": 34, "line": 2627 }, "start": { "character": 27, "line": 2627 } } }, { "range": { "end": { "character": 18, "line": 1166 }, "start": { "character": 11, "line": 1166 } } }, { "range": { "end": { "character": 37, "line": 3245 }, "start": { "character": 30, "line": 3245 } } }, { "range": { "end": { "character": 29, "line": 1749 }, "start": { "character": 22, "line": 1749 } } }, { "range": { "end": { "character": 48, "line": 1747 }, "start": { "character": 41, "line": 1747 } } }, { "range": { "end": { "character": 27, "line": 1928 }, "start": { "character": 20, "line": 1928 } } }, { "range": { "end": { "character": 52, "line": 2990 }, "start": { "character": 45, "line": 2990 } } }, { "range": { "end": { "character": 29, "line": 3285 }, "start": { "character": 22, "line": 3285 } } }, { "range": { "end": { "character": 22, "line": 3242 }, "start": { "character": 15, "line": 3242 } } }, { "range": { "end": { "character": 21, "line": 1918 }, "start": { "character": 14, "line": 1918 } } }, { "range": { "end": { "character": 31, "line": 1704 }, "start": { "character": 24, "line": 1704 } } }, { "range": { "end": { "character": 22, "line": 1623 }, "start": { "character": 15, "line": 1623 } } }, { "range": { "end": { "character": 17, "line": 1876 }, "start": { "character": 10, "line": 1876 } } }, { "range": { "end": { "character": 27, "line": 1188 }, "start": { "character": 20, "line": 1188 } } }, { "range": { "end": { "character": 21, "line": 1820 }, "start": { "character": 14, "line": 1820 } } }, { "range": { "end": { "character": 29, "line": 1792 }, "start": { "character": 22, "line": 1792 } } }, { "range": { "end": { "character": 74, "line": 2605 }, "start": { "character": 67, "line": 2605 } } }, { "range": { "end": { "character": 32, "line": 1662 }, "start": { "character": 25, "line": 1662 } } }, { "range": { "end": { "character": 24, "line": 1737 }, "start": { "character": 17, "line": 1737 } } }, { "range": { "end": { "character": 49, "line": 2804 }, "start": { "character": 42, "line": 2804 } } }, { "range": { "end": { "character": 29, "line": 3284 }, "start": { "character": 22, "line": 3284 } } }, { "range": { "end": { "character": 26, "line": 1838 }, "start": { "character": 19, "line": 1838 } } }, { "range": { "end": { "character": 30, "line": 1784 }, "start": { "character": 23, "line": 1784 } } }, { "range": { "end": { "character": 22, "line": 1880 }, "start": { "character": 15, "line": 1880 } } }, { "range": { "end": { "character": 27, "line": 3286 }, "start": { "character": 20, "line": 3286 } } }, { "range": { "end": { "character": 15, "line": 2993 }, "start": { "character": 8, "line": 2993 } } }, { "range": { "end": { "character": 42, "line": 1630 }, "start": { "character": 38, "line": 1630 } } }, { "range": { "end": { "character": 29, "line": 1698 }, "start": { "character": 22, "line": 1698 } } }, { "range": { "end": { "character": 15, "line": 1732 }, "start": { "character": 8, "line": 1732 } } }, { "range": { "end": { "character": 17, "line": 1715 }, "start": { "character": 10, "line": 1715 } } }, { "range": { "end": { "character": 17, "line": 1855 }, "start": { "character": 10, "line": 1855 } } }, { "range": { "end": { "character": 74, "line": 2577 }, "start": { "character": 67, "line": 2577 } } }, { "range": { "end": { "character": 27, "line": 3283 }, "start": { "character": 20, "line": 3283 } } }, { "range": { "end": { "character": 37, "line": 1849 }, "start": { "character": 33, "line": 1849 } } }, { "range": { "end": { "character": 22, "line": 1826 }, "start": { "character": 15, "line": 1826 } } }, { "range": { "end": { "character": 33, "line": 1731 }, "start": { "character": 26, "line": 1731 } } }, { "range": { "end": { "character": 22, "line": 1679 }, "start": { "character": 15, "line": 1679 } } }, { "range": { "end": { "character": 40, "line": 1844 }, "start": { "character": 33, "line": 1844 } } }, { "range": { "end": { "character": 25, "line": 1832 }, "start": { "character": 18, "line": 1832 } } }, { "range": { "end": { "character": 20, "line": 1936 }, "start": { "character": 13, "line": 1936 } } }, { "range": { "end": { "character": 20, "line": 3241 }, "start": { "character": 13, "line": 3241 } } }, { "range": { "end": { "character": 22, "line": 1859 }, "start": { "character": 15, "line": 1859 } } }, { "range": { "end": { "character": 15, "line": 2154 }, "start": { "character": 8, "line": 2154 } } }, { "range": { "end": { "character": 37, "line": 3186 }, "start": { "character": 30, "line": 3186 } } }, { "range": { "end": { "character": 43, "line": 2553 }, "start": { "character": 36, "line": 2553 } } }, { "range": { "end": { "character": 35, "line": 1709 }, "start": { "character": 28, "line": 1709 } } }, { "range": { "end": { "character": 59, "line": 2609 }, "start": { "character": 52, "line": 2609 } } }, { "range": { "end": { "character": 52, "line": 2786 }, "start": { "character": 45, "line": 2786 } } }, { "range": { "end": { "character": 40, "line": 2153 }, "start": { "character": 33, "line": 2153 } } }, { "range": { "end": { "character": 41, "line": 1930 }, "start": { "character": 34, "line": 1930 } } }, { "range": { "end": { "character": 33, "line": 1938 }, "start": { "character": 26, "line": 1938 } } }, { "range": { "end": { "character": 33, "line": 1900 }, "start": { "character": 26, "line": 1900 } } }, { "range": { "end": { "character": 26, "line": 1910 }, "start": { "character": 19, "line": 1910 } } }, { "range": { "end": { "character": 45, "line": 1741 }, "start": { "character": 41, "line": 1741 } } } ] } 08:19:56.599 Server { "id": 16, "jsonrpc": "2.0", "method": "window/workDoneProgress/create", "params": { "token": "rustAnalyzer/Indexing" } } 08:19:56.599 Client { "id": 16, "jsonrpc": "2.0", "result": null } 08:19:56.599 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "begin", "percentage": 0, "title": "Indexing" } } } 08:19:56.599 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "0/31 (core + 1 more)", "percentage": 0 } } } 08:19:56.607 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "1/31 (core)", "percentage": 3 } } } 08:19:56.627 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "percentage": 6 } } } 08:19:56.627 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "2/31 (alloc)", "percentage": 6 } } } 08:19:56.627 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "3/31 (std)", "percentage": 9 } } } 08:19:56.647 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "4/31 (proc_macro)", "percentage": 12 } } } 08:19:56.668 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "percentage": 16 } } } 08:19:56.668 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "5/31 (serde + 1 more)", "percentage": 16 } } } 08:19:56.677 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "5/31 (serde + 5 more)", "percentage": 16 } } } 08:19:56.677 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "6/31 (serde + 5 more)", "percentage": 19 } } } 08:19:56.677 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "7/31 (serde + 5 more)", "percentage": 22 } } } 08:19:56.677 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "8/31 (serde + 5 more)", "percentage": 25 } } } 08:19:56.690 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "9/31 (serde + 4 more)", "percentage": 29 } } } 08:19:56.690 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "9/31 (serde + 5 more)", "percentage": 29 } } } 08:19:56.711 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "11/31 (rusttype + 5 more)", "percentage": 35 } } } 08:19:56.711 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "12/31 (rusttype + 5 more)", "percentage": 38 } } } 08:19:56.711 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "13/31 (rusttype + 5 more)", "percentage": 41 } } } 08:19:56.711 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "14/31 (rusttype + 5 more)", "percentage": 45 } } } 08:19:56.744 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "15/31 (rusttype + 5 more)", "percentage": 48 } } } 08:19:56.760 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "16/31 (rusttype + 5 more)", "percentage": 51 } } } 08:19:56.770 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "17/31 (rusttype + 5 more)", "percentage": 54 } } } 08:19:56.782 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "18/31 (rusttype + 4 more)", "percentage": 58 } } } 08:19:56.782 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "18/31 (rusttype + 5 more)", "percentage": 58 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "19/31 (rusttype + 4 more)", "percentage": 61 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "19/31 (rusttype + 5 more)", "percentage": 61 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "20/31 (rusttype + 4 more)", "percentage": 64 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "20/31 (rusttype + 5 more)", "percentage": 64 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "21/31 (rusttype + 4 more)", "percentage": 67 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "21/31 (rusttype + 5 more)", "percentage": 67 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "22/31 (rusttype + 4 more)", "percentage": 70 } } } 08:19:56.795 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "24/31 (rusttype + 4 more)", "percentage": 77 } } } 08:19:56.808 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "25/31 (rusttype + 3 more)", "percentage": 80 } } } 08:19:56.848 Server { "id": "{f283556c-9ad8-4ac8-bc97-68431b46ccab}", "jsonrpc": "2.0", "result": { "data": [ 0, 0, 37, 0, 1, 1, 0, 3, 0, 1, 1, 0, 36, 0, 1, 0, 36, 11, 15, 6145, 0, 11, 5, 0, 1, 0, 5, 8, 15, 6145, 0, 8, 10, 0, 1, 0, 10, 10, 15, 6145, 1, 0, 8, 0, 1, 0, 8, 7, 27, 6145, 0, 7, 67, 0, 1, 1, 0, 11, 0, 1, 0, 11, 12, 15, 6145, 0, 12, 5, 0, 1, 0, 5, 9, 15, 6145, 0, 9, 46, 0, 1, 1, 0, 61, 0, 1, 1, 0, 3, 0, 1, 1, 0, 29, 0, 1, 0, 29, 13, 3, 6145, 0, 13, 33, 0, 1, 1, 0, 45, 0, 1, 0, 45, 8, 15, 6145, 0, 8, 2, 0, 1, 0, 2, 13, 3, 6145, 0, 13, 9, 0, 1, 1, 0, 78, 0, 1, 1, 0, 78, 0, 1, 1, 0, 4, 0, 1, 0, 4, 11, 15, 6145, 0, 11, 53, 0, 1, 1, 0, 79, 0, 1, 1, 0, 3, 0, 1, 1, 0, 23, 0, 1, 1, 0, 3, 0, 1, 1, 0, 78, 0, 1, 1, 0, 80, 0, 1, 1, 0, 79, 0, 1, 1, 0, 18, 0, 1, 1, 0, 3, 0, 1, 1, 0, 19, 0, 1, 1, 0, 3, 0, 1, 1, 0, 79, 0, 1, 1, 0, 20, 0, 1, 1, 0, 3, 0, 1, 1, 0, 38, 0, 1, 0, 38, 8, 15, 6145, 0, 8, 14, 0, 1, 0, 14, 7, 27, 6145, 1, 0, 37, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 18, 14, 2048, 0, 18, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 34, 0, 1, 0, 34, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 20, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 3, 14, 2048, 0, 3, 2, 36, 2048, 0, 2, 1, 14, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 10, 14, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 5, 14, 2048, 0, 5, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 60, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 40, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 0, 1, 3, 14, 2048, 0, 3, 2, 36, 2048, 0, 2, 1, 14, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 14, 14, 2048, 0, 14, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 7, 4, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 36, 0, 1, 1, 0, 27, 0, 1, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 4, 26, 8224, 0, 5, 22, 39, 32, 0, 23, 1, 21, 32, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 3, 26, 8224, 0, 4, 4, 39, 32, 0, 5, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 5, 9, 2, 2, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 6, 9, 8200, 0, 6, 2, 11, 0, 0, 3, 6, 5, 8200, 0, 8, 3, 3, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 11, 9, 65544, 0, 11, 2, 11, 0, 0, 2, 15, 15, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 5, 9, 65544, 0, 5, 2, 11, 0, 0, 2, 5, 5, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 2, 9, 65544, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 4, 9, 8200, 0, 4, 2, 11, 0, 0, 3, 4, 5, 8200, 0, 6, 6, 5, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 2, 9, 65544, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 4, 9, 8200, 0, 4, 2, 11, 0, 0, 2, 13, 5, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 3, 4, 46, 8200, 0, 6, 5, 5, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 2, 9, 8200, 0, 2, 2, 11, 0, 0, 2, 2, 15, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 7, 5, 8200, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 4, 9, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 15, 8200, 2, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 65544, 0, 3, 2, 11, 0, 0, 3, 5, 15, 65544, 0, 7, 8, 15, 65544, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8, 0, 3, 2, 11, 0, 0, 2, 4, 9, 65544, 0, 4, 2, 11, 0, 0, 3, 11, 4, 65544, 0, 13, 15, 4, 65544, 0, 17, 12, 4, 65544, 0, 14, 12, 17, 65676, 2, 0, 80, 0, 0, 1, 0, 16, 0, 0, 1, 0, 80, 0, 0, 1, 0, 2, 0, 0, 1, 0, 79, 0, 0, 1, 0, 74, 0, 0, 1, 0, 78, 0, 0, 1, 0, 71, 0, 0, 1, 0, 13, 0, 0, 2, 0, 80, 0, 0, 1, 0, 19, 0, 0, 1, 0, 80, 0, 0, 2, 0, 58, 0, 1, 1, 0, 3, 0, 1, 1, 0, 79, 0, 1, 1, 0, 76, 0, 1, 1, 0, 79, 0, 1, 1, 0, 78, 0, 1, 1, 0, 34, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 9, 15, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 6, 15, 2048, 0, 6, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 6, 2048, 0, 2, 1, 39, 2048, 0, 1, 15, 4, 2050, 0, 15, 1, 45, 2048, 0, 1, 1, 12, 133122, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 0, 1, 3, 27, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 2, 41, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 12, 133376, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 5, 6, 2560, 0, 5, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 8, 39, 2048, 0, 8, 9, 15, 2048, 0, 9, 2, 11, 2048, 0, 2, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 16, 17, 2050, 0, 16, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 16, 17, 2048, 0, 16, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 8, 39, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 5, 7, 2048, 0, 5, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 2, 6, 2560, 0, 2, 1, 39, 2048, 0, 1, 3, 7, 2048, 0, 3, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 11, 39, 2048, 0, 11, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 23, 14, 18432, 0, 23, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 11, 39, 2048, 0, 11, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 23, 14, 18432, 0, 23, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 4, 10, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 16, 14, 18432, 0, 16, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 11, 39, 2048, 0, 11, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 21, 14, 18432, 0, 21, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 11, 39, 2048, 0, 11, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 17, 14, 18432, 0, 17, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 10, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 32, 14, 18432, 0, 32, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 4, 33, 8232, 0, 6, 5, 33, 8232, 0, 7, 5, 33, 8232, 0, 7, 4, 33, 8232, 0, 6, 10, 33, 8232, 0, 12, 3, 33, 8232, 0, 5, 9, 33, 8232, 0, 11, 2, 33, 8232, 0, 3, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 4, 6, 0, 0, 5, 6, 3, 65546, 0, 7, 2, 41, 10, 1, 4, 42, 0, 1, 1, 4, 3, 0, 1, 1, 4, 73, 0, 1, 1, 4, 14, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 8, 2, 65546, 0, 9, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 2, 4, 75, 0, 1, 1, 4, 33, 0, 1, 1, 4, 3, 0, 1, 1, 4, 75, 0, 1, 1, 4, 39, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 11, 2, 65546, 1, 8, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 8, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 3, 4, 41, 0, 1, 1, 4, 3, 0, 1, 1, 4, 72, 0, 1, 1, 4, 25, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 12, 2, 65546, 0, 13, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 2, 2, 27, 0, 2, 4, 47, 0, 1, 1, 4, 3, 0, 1, 1, 4, 67, 0, 1, 1, 4, 61, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 8, 2, 65546, 0, 9, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 2, 4, 71, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 67, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 2, 65546, 1, 8, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 8, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 3, 4, 41, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 4, 2, 65546, 0, 5, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 2, 2, 27, 0, 3, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 6, 3, 65544, 0, 7, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 3, 8, 131082, 0, 5, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 5, 27, 0, 1, 8, 3, 6, 0, 0, 4, 4, 46, 65544, 0, 4, 2, 11, 0, 0, 2, 6, 3, 65544, 0, 6, 2, 11, 0, 1, 8, 2, 6, 0, 0, 3, 10, 4, 10, 0, 11, 1, 12, 131082, 0, 4, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 5, 27, 0, 1, 12, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 16, 8, 196616, 0, 18, 1, 11, 0, 0, 1, 3, 8, 139272, 2, 8, 5, 6, 512, 0, 6, 1, 11, 0, 0, 1, 4, 46, 131080, 1, 12, 8, 2, 65544, 0, 9, 1, 17, 131082, 0, 3, 2, 11, 0, 0, 3, 1, 10, 0, 0, 2, 1, 11, 0, 0, 2, 10, 4, 8, 0, 11, 1, 17, 131080, 1, 12, 11, 2, 65544, 0, 12, 1, 17, 131082, 0, 3, 1, 17, 131082, 0, 3, 2, 11, 0, 1, 16, 1, 10, 0, 0, 2, 1, 11, 0, 0, 2, 10, 4, 8, 0, 11, 1, 17, 131080, 0, 3, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 10, 4, 8, 0, 11, 1, 17, 131080, 0, 3, 1, 11, 0, 0, 2, 1, 10, 0, 0, 4, 1, 10, 0, 0, 2, 1, 11, 0, 0, 2, 10, 4, 8, 0, 11, 1, 17, 131080, 0, 5, 4, 6, 512, 0, 7, 1, 10, 0, 2, 12, 12, 2, 65544, 0, 16, 2, 11, 0, 0, 3, 1, 10, 0, 1, 12, 3, 2, 65544, 0, 4, 1, 17, 131082, 0, 3, 1, 17, 131082, 0, 3, 2, 11, 0, 0, 3, 1, 10, 0, 0, 2, 1, 11, 0, 0, 2, 10, 4, 8, 0, 11, 1, 17, 131080, 0, 3, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 10, 4, 8, 0, 11, 1, 17, 131080, 0, 3, 1, 11, 0, 0, 2, 1, 10, 0, 0, 4, 1, 10, 0, 0, 2, 1, 11, 0, 0, 2, 10, 4, 8, 0, 11, 1, 17, 131080, 0, 5, 4, 6, 512, 0, 7, 1, 10, 0, 1, 12, 8, 2, 65544, 0, 9, 1, 17, 131082, 0, 3, 2, 11, 0, 0, 3, 1, 10, 0, 0, 2, 1, 11, 0, 0, 2, 10, 4, 8, 0, 11, 1, 17, 131080, 1, 12, 4, 2, 65544, 0, 8, 2, 11, 0, 0, 3, 1, 10, 0, 4, 4, 67, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 6, 15, 2048, 0, 6, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 4, 10, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 16, 14, 18432, 0, 16, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 10, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 196618, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 3, 6, 0, 0, 4, 4, 46, 65544, 0, 4, 2, 11, 0, 0, 2, 6, 3, 65544, 0, 6, 2, 11, 0, 1, 8, 7, 7, 8200, 0, 7, 1, 7, 0, 0, 2, 1, 11, 16384, 0, 1, 4, 46, 147464, 0, 6, 8, 2, 81928, 0, 14, 12, 2, 81928, 0, 18, 11, 2, 81928, 0, 12, 1, 11, 16384, 0, 1, 1, 11, 16384, 3, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 8, 8, 131082, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 7, 7, 8200, 0, 7, 1, 7, 0, 0, 2, 1, 11, 16384, 0, 1, 4, 46, 147464, 0, 6, 6, 3, 81928, 0, 6, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 4, 2, 81928, 3, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 17, 8, 131082, 0, 19, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 8, 8, 131080, 4, 0, 80, 0, 0, 1, 0, 26, 0, 0, 1, 0, 80, 0, 0, 2, 0, 65, 0, 1, 1, 0, 40, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 3, 28, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 38, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 3, 28, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 12, 4, 65546, 0, 13, 1, 12, 10, 0, 3, 4, 27, 0, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 4, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 8, 8, 139272, 0, 11, 2, 11, 0, 0, 3, 11, 4, 65544, 0, 12, 1, 12, 8, 0, 2, 2, 6, 0, 0, 3, 2, 27, 0, 3, 0, 70, 0, 1, 1, 0, 3, 0, 1, 1, 0, 48, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 5, 6, 0, 0, 6, 14, 17, 65678, 0, 16, 4, 27, 0, 0, 5, 1, 11, 0, 0, 2, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8, 0, 3, 2, 11, 0, 0, 2, 4, 9, 65544, 0, 4, 2, 11, 0, 0, 2, 8, 17, 65676, 2, 0, 70, 0, 1, 1, 0, 3, 0, 1, 1, 0, 48, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 5, 6, 0, 0, 6, 18, 17, 65678, 0, 21, 3, 27, 0, 0, 4, 1, 11, 0, 0, 2, 5, 6, 66568, 0, 5, 2, 11, 0, 0, 2, 3, 9, 8, 0, 3, 2, 11, 0, 0, 2, 4, 9, 65544, 0, 4, 2, 11, 0, 0, 2, 12, 17, 65676, 2, 0, 80, 0, 0, 1, 0, 15, 0, 0, 1, 0, 80, 0, 0, 2, 0, 78, 0, 0, 1, 0, 79, 0, 0, 1, 0, 42, 0, 0, 1, 0, 2, 6, 0, 0, 3, 10, 4, 10, 0, 11, 2, 41, 10, 0, 4, 2, 41, 10, 0, 4, 1, 16, 10, 0, 3, 1, 16, 10, 0, 3, 3, 6, 0, 0, 4, 4, 12, 32778, 0, 6, 1, 16, 8, 0, 3, 3, 6, 0, 0, 4, 6, 12, 32778, 0, 8, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 1, 16, 8, 1, 0, 5, 6, 0, 1, 4, 1, 16, 8, 0, 3, 8, 5, 8200, 0, 9, 4, 49, 270344, 0, 5, 1, 11, 0, 0, 2, 9, 3, 65544, 0, 10, 2, 41, 8, 0, 7, 5, 5, 8200, 1, 4, 1, 16, 8, 0, 3, 8, 5, 8200, 0, 9, 4, 49, 270344, 0, 5, 1, 11, 0, 0, 2, 9, 3, 65544, 0, 10, 2, 41, 8, 2, 4, 4, 6, 512, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 9, 17, 32778, 0, 10, 1, 11, 0, 0, 2, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 5, 8, 401416, 1, 8, 5, 6, 512, 0, 7, 9, 17, 32776, 0, 9, 1, 11, 0, 0, 1, 4, 8, 434184, 0, 8, 6, 12, 32776, 0, 6, 1, 11, 0, 0, 1, 4, 8, 434184, 1, 13, 4, 2, 8200, 0, 5, 3, 6, 0, 0, 4, 1, 17, 131082, 0, 4, 4, 2, 8200, 0, 5, 3, 6, 0, 0, 4, 1, 17, 131082, 0, 4, 2, 6, 512, 0, 3, 1, 17, 131080, 0, 2, 2, 11, 0, 0, 3, 1, 17, 131080, 0, 2, 2, 11, 0, 1, 13, 4, 2, 8200, 0, 9, 4, 2, 8200, 0, 9, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 4, 2, 8200, 1, 13, 4, 2, 8200, 0, 9, 4, 2, 8200, 0, 6, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 4, 12, 33032, 1, 13, 4, 2, 8200, 0, 6, 4, 2, 8200, 0, 6, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 4, 12, 33032, 1, 13, 4, 2, 8200, 0, 6, 4, 2, 8200, 0, 9, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 4, 2, 8200, 2, 8, 4, 12, 32776, 0, 5, 1, 11, 0, 0, 2, 9, 17, 32776, 4, 0, 25, 0, 0, 1, 0, 2, 6, 0, 0, 3, 16, 4, 10, 0, 17, 1, 12, 131082, 0, 5, 2, 27, 0, 0, 5, 2, 11, 0, 0, 3, 4, 27, 0, 1, 4, 3, 7, 8200, 0, 3, 1, 7, 0, 0, 2, 9, 39, 16384, 0, 10, 1, 11, 16384, 0, 2, 7, 14, 16384, 0, 9, 2, 11, 0, 0, 3, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 8, 8, 139272, 0, 9, 1, 11, 0, 0, 1, 4, 10, 0, 3, 0, 80, 0, 0, 1, 0, 47, 0, 0, 1, 0, 80, 0, 0, 2, 0, 64, 0, 1, 1, 0, 2, 6, 0, 0, 3, 17, 4, 10, 0, 18, 1, 12, 131082, 0, 5, 2, 27, 0, 0, 5, 6, 12, 10, 0, 8, 6, 3, 8200, 0, 7, 6, 3, 65544, 0, 7, 2, 41, 0, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 4, 3, 6, 0, 0, 4, 4, 17, 131082, 0, 5, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 1, 11, 0, 0, 2, 6, 12, 8, 0, 9, 1, 11, 0, 0, 1, 1, 12, 131080, 0, 2, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 3, 8, 131080, 0, 5, 2, 11, 0, 0, 6, 4, 6, 512, 0, 7, 1, 12, 131080, 1, 4, 1, 11, 0, 0, 1, 4, 17, 131080, 0, 4, 1, 11, 0, 0, 1, 8, 8, 139272, 0, 11, 2, 11, 0, 0, 3, 11, 4, 65544, 0, 12, 4, 17, 131080, 0, 5, 1, 10, 0, 3, 0, 51, 0, 0, 1, 0, 2, 6, 0, 0, 3, 18, 4, 10, 0, 19, 4, 12, 131082, 0, 7, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 4, 6, 3, 8200, 0, 8, 5, 15, 65544, 0, 8, 6, 3, 8200, 0, 8, 5, 15, 65544, 1, 4, 2, 6, 512, 0, 3, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 16, 8, 196616, 0, 19, 2, 11, 0, 0, 3, 5, 14, 0, 1, 8, 6, 6, 512, 0, 8, 4, 2, 8200, 0, 5, 4, 12, 131080, 0, 7, 4, 2, 8200, 3, 4, 67, 0, 0, 1, 4, 65, 0, 0, 1, 4, 66, 0, 0, 1, 4, 60, 0, 0, 1, 4, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 4, 17, 32778, 0, 5, 1, 11, 0, 0, 2, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 16, 8, 196616, 0, 18, 1, 11, 0, 0, 1, 7, 8, 139272, 0, 8, 1, 10, 0, 0, 4, 1, 12, 131082, 0, 3, 1, 11, 0, 0, 1, 1, 12, 131080, 0, 2, 2, 11, 0, 0, 3, 4, 10, 0, 1, 4, 3, 6, 0, 0, 4, 5, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 17, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 8, 434184, 1, 4, 3, 6, 0, 0, 4, 6, 17, 10, 0, 7, 1, 11, 0, 0, 2, 4, 17, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 8, 434184, 1, 4, 2, 6, 512, 0, 3, 6, 17, 8, 0, 7, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 5, 3, 14, 0, 1, 9, 4, 2, 8200, 0, 5, 4, 12, 131080, 0, 7, 4, 2, 8200, 1, 6, 4, 6, 512, 1, 8, 6, 6, 524288, 2, 16, 6, 17, 8, 0, 6, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 5, 1, 12, 131082, 0, 3, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 1, 12, 131080, 1, 16, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 5, 1, 12, 131082, 0, 3, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 1, 12, 131080, 6, 0, 2, 6, 0, 0, 3, 17, 4, 10, 0, 18, 4, 12, 131082, 0, 7, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 5, 5, 15, 65544, 0, 7, 6, 3, 8200, 0, 8, 5, 15, 65544, 1, 4, 3, 6, 0, 0, 4, 5, 17, 131082, 0, 6, 1, 11, 0, 0, 2, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 16, 8, 196616, 1, 4, 2, 6, 512, 0, 3, 5, 17, 131080, 0, 6, 2, 11, 0, 0, 3, 5, 14, 0, 1, 8, 6, 6, 512, 0, 8, 4, 12, 131080, 0, 6, 4, 2, 8200, 3, 4, 67, 0, 0, 1, 4, 65, 0, 0, 1, 4, 66, 0, 0, 1, 4, 60, 0, 0, 1, 4, 3, 6, 0, 0, 4, 1, 17, 10, 0, 2, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 5, 17, 131080, 0, 6, 1, 10, 0, 0, 1, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 8, 8, 434184, 0, 10, 1, 12, 131082, 0, 3, 1, 11, 0, 0, 1, 1, 12, 131080, 0, 2, 2, 11, 0, 0, 3, 4, 10, 0, 1, 8, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 2, 11, 0, 0, 3, 1, 17, 8, 0, 2, 1, 11, 0, 0, 2, 1, 10, 0, 1, 8, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 3, 6, 6, 512, 0, 8, 4, 12, 131080, 0, 6, 4, 2, 8200, 2, 4, 3, 6, 0, 0, 4, 6, 17, 131082, 0, 7, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 17, 131080, 0, 6, 2, 11, 0, 0, 2, 1, 17, 8, 1, 4, 3, 6, 0, 0, 4, 5, 17, 131082, 0, 6, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 17, 131080, 0, 6, 1, 17, 8, 0, 2, 1, 11, 0, 0, 2, 1, 10, 0, 0, 1, 2, 11, 0, 1, 4, 6, 6, 524288, 2, 12, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 6, 17, 131080, 1, 12, 4, 2, 8200, 0, 5, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 5, 17, 131080, 5, 0, 80, 0, 0, 1, 0, 21, 0, 0, 1, 0, 80, 0, 0, 2, 0, 79, 0, 1, 1, 0, 77, 0, 1, 1, 0, 25, 0, 1, 1, 0, 3, 0, 1, 1, 0, 66, 0, 1, 1, 0, 58, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 4, 33, 8232, 0, 6, 5, 33, 8232, 0, 7, 9, 33, 8232, 0, 11, 10, 33, 8232, 0, 12, 5, 33, 8232, 0, 6, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 3, 10, 1, 4, 6, 2, 10, 0, 7, 1, 11, 0, 0, 2, 1, 10, 0, 0, 5, 5, 0, 0, 1, 4, 8, 2, 10, 0, 9, 1, 11, 0, 0, 2, 1, 10, 0, 0, 3, 20, 0, 0, 1, 4, 4, 2, 10, 0, 5, 1, 11, 0, 0, 2, 1, 10, 0, 0, 7, 14, 0, 0, 1, 4, 4, 2, 10, 0, 5, 1, 11, 0, 0, 2, 1, 10, 0, 3, 0, 77, 0, 1, 1, 0, 19, 0, 1, 1, 0, 3, 0, 1, 1, 0, 30, 0, 1, 0, 30, 10, 3, 6145, 0, 10, 34, 0, 1, 1, 0, 54, 0, 1, 0, 54, 9, 15, 6145, 0, 9, 7, 0, 1, 1, 0, 30, 0, 1, 1, 0, 3, 0, 1, 1, 0, 70, 0, 1, 1, 0, 4, 0, 1, 0, 4, 18, 2, 6145, 0, 18, 4, 0, 1, 0, 4, 13, 3, 6145, 0, 13, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 27, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 2, 6, 2560, 0, 2, 1, 39, 2048, 0, 1, 3, 7, 2048, 0, 3, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 9, 15, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 16, 14, 2048, 0, 16, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 5, 6, 2560, 0, 5, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 9, 15, 2048, 0, 9, 2, 11, 2048, 0, 2, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 16, 17, 2050, 0, 16, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 8, 39, 2048, 0, 8, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 10, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 16, 39, 18432, 0, 16, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 8, 39, 2048, 0, 8, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 16, 39, 18432, 0, 16, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 11, 7, 2048, 0, 11, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 45, 0, 1, 1, 0, 35, 0, 1, 1, 0, 41, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 4, 33, 8232, 0, 6, 5, 33, 8232, 0, 7, 2, 33, 8232, 0, 4, 5, 33, 8232, 0, 6, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 15, 15, 65546, 0, 16, 2, 41, 10, 1, 4, 44, 0, 1, 1, 4, 3, 13, 10, 0, 6, 2, 41, 8, 0, 3, 5, 15, 65544, 2, 4, 27, 0, 1, 1, 4, 6, 13, 10, 0, 8, 6, 3, 65544, 0, 7, 2, 41, 8, 3, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 15, 15, 65544, 0, 16, 2, 41, 8, 1, 4, 35, 0, 1, 1, 4, 3, 0, 1, 1, 4, 8, 0, 1, 0, 8, 10, 3, 6145, 0, 10, 54, 0, 1, 1, 4, 22, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 196618, 0, 6, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 65544, 0, 7, 2, 41, 8, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 3, 4, 20, 0, 1, 0, 20, 9, 15, 6145, 0, 9, 23, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 3, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 9, 5, 8200, 0, 10, 3, 6, 0, 0, 4, 15, 15, 65544, 0, 16, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 2, 8, 393226, 0, 4, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 15, 15, 65544, 0, 16, 2, 41, 8, 0, 5, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 7, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 6, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 10, 5, 8200, 0, 11, 3, 6, 0, 0, 4, 15, 15, 65544, 0, 16, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 11, 8, 393226, 0, 13, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 15, 15, 65544, 0, 16, 2, 41, 8, 0, 5, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 10, 5, 8200, 0, 10, 2, 11, 0, 0, 2, 11, 8, 393224, 0, 12, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 8, 1, 11, 0, 0, 1, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 6, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 5, 8200, 0, 4, 3, 6, 0, 0, 4, 15, 15, 65544, 0, 16, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 4, 47, 8, 0, 6, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 3, 5, 8200, 0, 3, 2, 11, 0, 0, 2, 3, 8, 393224, 0, 4, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 8, 1, 11, 0, 0, 1, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 6, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 6, 0, 0, 4, 15, 15, 65544, 0, 16, 2, 41, 0, 1, 4, 2, 6, 0, 0, 3, 4, 8, 393226, 0, 5, 1, 16, 10, 0, 3, 6, 5, 8200, 0, 9, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 1, 16, 8, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 4, 8, 393224, 0, 5, 1, 12, 164104, 4, 0, 33, 0, 1, 1, 0, 3, 0, 1, 1, 0, 76, 0, 1, 1, 0, 17, 0, 1, 1, 0, 3, 0, 1, 1, 0, 45, 0, 1, 0, 45, 14, 15, 6145, 0, 14, 18, 0, 1, 1, 0, 62, 0, 1, 0, 62, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 11, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 9, 15, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 18, 14, 2048, 0, 18, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 10, 17, 2050, 0, 10, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 7, 4, 2048, 0, 7, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 3, 15, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 4, 33, 8232, 0, 6, 5, 33, 8232, 0, 7, 9, 33, 8232, 0, 11, 2, 33, 8232, 0, 4, 10, 33, 8232, 0, 12, 3, 33, 8232, 0, 5, 4, 33, 8232, 0, 6, 5, 33, 8232, 0, 6, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 4, 6, 0, 0, 5, 9, 3, 65546, 0, 10, 2, 41, 10, 1, 4, 58, 0, 1, 1, 4, 3, 0, 1, 1, 4, 50, 0, 1, 0, 50, 10, 3, 6145, 0, 10, 16, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 1, 4, 27, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 6, 2, 65546, 0, 7, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 2, 15, 15, 65544, 0, 16, 2, 41, 8, 2, 4, 84, 0, 1, 1, 4, 3, 0, 1, 1, 4, 75, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 7, 2, 65546, 2, 4, 52, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 6, 2, 65546, 2, 4, 52, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 9, 2, 65546, 2, 4, 51, 0, 1, 1, 4, 3, 0, 1, 1, 4, 74, 0, 1, 1, 4, 19, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 6, 2, 65546, 0, 7, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 3, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 9, 3, 65544, 0, 10, 2, 41, 8, 1, 4, 28, 0, 1, 0, 28, 9, 15, 6145, 0, 9, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 19, 14, 2048, 0, 19, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 10, 17, 2050, 0, 10, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 3, 15, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 4, 12, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 12, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 7, 4, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 14, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 50, 14, 32, 0, 50, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 65802, 0, 10, 4, 46, 10, 0, 6, 2, 11, 0, 0, 4, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 8, 5, 6, 512, 0, 6, 4, 46, 8, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 1, 17, 10, 0, 3, 2, 11, 0, 0, 3, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 9, 8, 196616, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 0, 8, 2, 11, 0, 0, 3, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 12, 17, 65676, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 2, 11, 0, 0, 3, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 3, 14, 0, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 9, 2, 65544, 0, 10, 2, 11, 0, 0, 3, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 4, 14, 0, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 4, 17, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 17, 131080, 5, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 9, 3, 65544, 0, 10, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 65544, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 22, 14, 32, 0, 24, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 9, 3, 65544, 0, 10, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 65544, 0, 11, 1, 11, 0, 0, 1, 6, 8, 393224, 4, 0, 25, 0, 1, 0, 25, 13, 3, 6145, 0, 13, 7, 0, 1, 0, 7, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 61, 0, 1, 0, 61, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 0, 35, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 18, 14, 2048, 0, 18, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2560, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 2, 6, 2560, 0, 2, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 15, 14, 18432, 0, 15, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 36, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 5, 33, 8232, 0, 6, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 51, 14, 32, 0, 51, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 10, 15, 65546, 0, 11, 2, 41, 10, 1, 4, 41, 0, 0, 1, 4, 4, 13, 10, 0, 7, 2, 41, 8, 0, 4, 2, 27, 0, 2, 4, 49, 0, 0, 1, 4, 6, 13, 10, 0, 8, 6, 3, 8200, 0, 7, 6, 3, 65544, 0, 7, 2, 41, 8, 2, 4, 67, 0, 0, 1, 4, 71, 0, 0, 1, 4, 58, 0, 0, 1, 4, 17, 13, 10, 0, 19, 4, 27, 0, 2, 4, 76, 0, 0, 1, 4, 32, 0, 0, 1, 4, 5, 13, 10, 0, 7, 5, 3, 8, 1, 4, 4, 13, 10, 0, 6, 5, 3, 8, 3, 0, 25, 0, 1, 0, 25, 13, 3, 6145, 0, 13, 7, 0, 1, 0, 7, 8, 15, 6145, 0, 8, 5, 0, 1, 0, 5, 9, 15, 6145, 0, 9, 8, 0, 1, 1, 0, 3, 0, 1, 1, 0, 55, 0, 1, 0, 55, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 0, 35, 0, 1, 1, 0, 3, 0, 1, 1, 0, 24, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 5, 33, 8232, 0, 6, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 51, 14, 32, 0, 51, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 4, 15, 65546, 0, 5, 2, 41, 10, 1, 4, 5, 13, 10, 0, 7, 10, 15, 65544, 0, 11, 2, 41, 8, 3, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 23, 14, 32, 0, 25, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 0, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 6, 6, 0, 0, 7, 11, 15, 10, 0, 12, 2, 41, 10, 0, 5, 2, 41, 8, 0, 3, 4, 15, 65544, 2, 8, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 11, 15, 8, 0, 12, 2, 41, 0, 1, 12, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 16, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 10, 8, 172040, 0, 12, 1, 11, 0, 0, 1, 7, 8, 172040, 0, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 0, 1, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 13, 1, 11, 0, 0, 1, 6, 8, 172040, 4, 8, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 11, 8, 172040, 0, 12, 12, 14, 0, 0, 13, 1, 11, 0, 0, 1, 5, 8, 172040, 0, 6, 1, 11, 0, 0, 1, 11, 15, 8, 0, 12, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 6, 8, 172040, 4, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 8, 1, 4, 34, 0, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 10, 8, 131082, 0, 12, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 5, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 6, 8, 139272, 0, 8, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 6, 3, 65544, 0, 6, 2, 11, 0, 0, 2, 3, 8, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 8200, 0, 10, 1, 10, 0, 3, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 15, 8, 131082, 0, 17, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 6, 8, 139272, 0, 8, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 6, 3, 65544, 0, 6, 2, 11, 0, 0, 2, 11, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 9, 8, 8200, 0, 10, 5, 23, 0, 3, 4, 71, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 16, 8, 131082, 0, 18, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 5, 27, 0, 1, 8, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 0, 9, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 15, 4, 6, 512, 0, 7, 1, 10, 0, 3, 4, 76, 0, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 15, 8, 131082, 0, 17, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 5, 27, 0, 1, 8, 3, 6, 0, 0, 4, 4, 17, 10, 0, 5, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 0, 9, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 17, 13, 8, 0, 20, 1, 10, 0, 0, 4, 4, 6, 512, 0, 7, 1, 10, 0, 1, 8, 3, 6, 0, 0, 4, 7, 17, 10, 0, 8, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 0, 9, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 20, 1, 10, 0, 0, 4, 4, 6, 512, 0, 7, 1, 10, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 16, 8, 131080, 0, 19, 1, 11, 0, 0, 2, 4, 17, 8, 0, 5, 1, 11, 0, 0, 2, 7, 17, 8, 3, 4, 29, 0, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 8, 8, 131082, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 3, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 11, 8, 131082, 0, 13, 4, 46, 131082, 0, 6, 1, 12, 10, 0, 3, 2, 27, 0, 0, 4, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 20, 15, 4, 65544, 0, 16, 1, 12, 8, 0, 5, 4, 6, 512, 0, 7, 11, 4, 65544, 0, 12, 1, 12, 8, 3, 4, 86, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 10, 17, 34818, 0, 10, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 18, 14, 2048, 0, 18, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 10, 17, 34816, 0, 10, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 10, 17, 34816, 0, 10, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 10, 39, 18432, 0, 10, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 196618, 0, 9, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 2, 41, 8, 0, 3, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 5, 17, 32778, 0, 6, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 8, 393224, 1, 8, 2, 6, 512, 0, 3, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 12, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 9, 8, 163848, 2, 8, 2, 6, 512, 0, 3, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 12, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 10, 8, 163848, 2, 8, 6, 6, 524288, 0, 9, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 13, 8, 524300, 0, 14, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 3, 4, 34, 0, 1, 1, 4, 2, 6, 0, 0, 3, 8, 8, 131082, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 17, 13, 8, 1, 12, 6, 6, 512, 0, 7, 4, 23, 0, 2, 8, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 1, 12, 2, 6, 512, 0, 3, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 17, 8, 131080, 1, 16, 6, 6, 512, 0, 7, 4, 23, 0, 3, 8, 5, 23, 0, 3, 4, 52, 0, 1, 1, 4, 2, 6, 0, 0, 3, 15, 8, 131082, 0, 17, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 8, 8, 131080, 1, 12, 6, 6, 512, 0, 7, 5, 23, 0, 2, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 4, 17, 32778, 0, 5, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 16, 8, 131080, 0, 18, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 4, 8, 139272, 1, 8, 5, 6, 512, 0, 7, 4, 17, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 8, 434184, 0, 8, 4, 17, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 8, 434184, 1, 13, 4, 2, 8200, 0, 6, 4, 10, 0, 0, 7, 4, 2, 8200, 0, 6, 2, 11, 0, 0, 3, 4, 23, 0, 1, 13, 4, 2, 8200, 0, 6, 4, 10, 0, 0, 7, 4, 2, 8200, 0, 6, 1, 17, 10, 0, 4, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 0, 12, 1, 17, 8, 1, 14, 2, 11, 0, 0, 3, 5, 23, 0, 4, 4, 68, 0, 0, 1, 4, 31, 0, 0, 1, 4, 6, 6, 524288, 0, 7, 2, 6, 0, 0, 3, 22, 8, 655370, 0, 23, 2, 41, 10, 0, 5, 4, 46, 131082, 0, 6, 4, 12, 131082, 0, 7, 2, 41, 8, 0, 4, 2, 27, 0, 0, 5, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 9, 3, 65544, 0, 10, 2, 41, 8, 1, 8, 5, 6, 512, 0, 6, 4, 12, 131080, 1, 12, 4, 14, 0, 0, 5, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 18, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 1, 12, 4, 14, 0, 0, 5, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 6, 46, 0, 0, 1, 12, 44, 0, 0, 1, 12, 35, 0, 0, 1, 12, 5, 14, 0, 0, 6, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 9, 2, 65544, 1, 12, 3, 14, 0, 0, 4, 2, 11, 0, 0, 3, 4, 2, 8200, 1, 14, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 6, 6, 524288, 0, 9, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 4, 12, 131080, 4, 4, 71, 0, 0, 1, 4, 23, 0, 0, 1, 4, 2, 6, 0, 0, 3, 20, 8, 131082, 0, 22, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 27, 0, 0, 7, 6, 3, 8200, 0, 7, 9, 3, 65544, 0, 10, 2, 41, 8, 1, 8, 12, 7, 8200, 0, 12, 1, 7, 0, 0, 2, 4, 46, 147464, 0, 4, 1, 11, 16384, 0, 1, 5, 13, 16392, 0, 6, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 5, 3, 16392, 0, 5, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 4, 2, 16392, 1, 8, 3, 6, 0, 0, 5, 5, 17, 10, 0, 7, 4, 17, 131082, 0, 6, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 8, 8, 434184, 0, 10, 1, 12, 131082, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 0, 12, 1, 11, 0, 0, 1, 1, 12, 131080, 1, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 4, 1, 10, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 1, 12, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 2, 11, 0, 0, 4, 1, 10, 0, 0, 3, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 1, 17, 8, 2, 8, 73, 0, 0, 1, 9, 4, 17, 131080, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 5, 17, 8, 0, 7, 6, 6, 524288, 0, 9, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 22, 8, 655368, 0, 23, 4, 17, 131080, 3, 4, 72, 0, 0, 1, 4, 23, 0, 0, 1, 4, 2, 6, 0, 0, 3, 25, 8, 131082, 0, 27, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 27, 0, 0, 7, 6, 3, 8200, 0, 7, 9, 3, 65544, 0, 10, 2, 41, 8, 1, 8, 12, 7, 8200, 0, 12, 1, 7, 0, 0, 2, 4, 46, 147464, 0, 4, 1, 11, 16384, 0, 1, 4, 13, 16392, 0, 5, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 5, 3, 16392, 0, 5, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 4, 2, 16392, 1, 8, 3, 6, 0, 0, 4, 5, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 1, 8, 3, 6, 0, 0, 5, 5, 17, 10, 0, 7, 4, 17, 131082, 0, 6, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 5, 17, 8, 0, 5, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 9, 8, 434184, 0, 11, 1, 12, 131082, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 0, 12, 1, 11, 0, 0, 1, 1, 12, 131080, 1, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 4, 1, 10, 0, 0, 3, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 5, 17, 8, 0, 5, 2, 11, 0, 1, 12, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 2, 11, 0, 0, 4, 1, 10, 0, 0, 3, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 5, 17, 8, 0, 6, 1, 11, 0, 0, 2, 1, 17, 8, 0, 2, 1, 11, 0, 0, 2, 1, 10, 0, 0, 1, 2, 11, 0, 2, 8, 73, 0, 0, 1, 9, 4, 17, 131080, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 5, 17, 8, 0, 7, 6, 6, 524288, 0, 9, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 22, 8, 655368, 0, 23, 4, 17, 131080, 3, 4, 69, 0, 0, 1, 4, 2, 6, 0, 0, 3, 9, 8, 163850, 0, 11, 3, 6, 0, 0, 4, 4, 46, 163850, 1, 8, 5, 6, 512, 0, 6, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 8, 8, 139272, 1, 12, 3, 6, 0, 0, 5, 4, 17, 10, 0, 6, 4, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 20, 8, 131080, 1, 12, 2, 6, 512, 0, 3, 4, 17, 8, 0, 4, 1, 11, 0, 0, 1, 7, 8, 139272, 1, 16, 6, 6, 512, 1, 14, 4, 6, 512, 1, 16, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 4, 17, 8, 0, 4, 2, 11, 0, 5, 4, 70, 0, 0, 1, 4, 2, 6, 0, 0, 3, 10, 8, 163850, 0, 12, 3, 6, 0, 0, 4, 4, 46, 163850, 1, 8, 5, 6, 512, 0, 6, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 1, 12, 3, 6, 0, 0, 5, 4, 17, 10, 0, 6, 4, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 25, 8, 131080, 1, 12, 2, 6, 512, 0, 3, 4, 17, 8, 0, 4, 1, 11, 0, 0, 1, 7, 8, 139272, 1, 16, 6, 6, 512, 1, 14, 4, 6, 512, 1, 16, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 4, 17, 8, 6, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 0, 9, 1, 11, 0, 0, 1, 9, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 17, 14, 32, 0, 19, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 0, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 6, 6, 0, 0, 7, 11, 15, 10, 0, 12, 2, 41, 10, 0, 5, 2, 41, 8, 0, 3, 4, 15, 65544, 2, 8, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 11, 15, 8, 0, 12, 2, 41, 0, 1, 12, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 16, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 10, 8, 172040, 0, 12, 1, 11, 0, 0, 1, 7, 8, 172040, 0, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 196616, 0, 7, 1, 11, 0, 0, 1, 6, 8, 172040, 4, 8, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 11, 8, 172040, 0, 12, 6, 14, 0, 0, 7, 1, 11, 0, 0, 1, 5, 8, 172040, 0, 6, 1, 11, 0, 0, 1, 11, 15, 8, 0, 12, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 6, 8, 172040, 4, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 4, 86, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 18, 14, 2048, 0, 18, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 196618, 0, 9, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 2, 41, 8, 0, 3, 4, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 7, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 0, 9, 1, 11, 0, 0, 1, 9, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 8, 5, 8200, 0, 9, 3, 6, 0, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 4, 4, 6, 0, 0, 5, 4, 49, 262154, 0, 5, 1, 11, 0, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 2, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 425994, 0, 6, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 4, 8, 425992, 0, 6, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 9, 8, 65800, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 19, 5, 8200, 0, 20, 3, 6, 0, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 9, 8, 425994, 0, 11, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 9, 8, 425992, 0, 11, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 9, 8, 65800, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 13, 5, 8200, 0, 14, 3, 6, 0, 0, 4, 4, 15, 65544, 0, 5, 2, 41, 0, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 8, 5, 8200, 0, 9, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 8, 1, 4, 4, 6, 0, 0, 5, 4, 49, 262154, 0, 5, 1, 11, 0, 0, 2, 9, 3, 65544, 0, 10, 2, 41, 8, 2, 4, 2, 6, 0, 0, 3, 4, 8, 425994, 0, 6, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 9, 3, 65544, 0, 10, 2, 41, 8, 1, 8, 5, 6, 512, 0, 6, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 8, 8, 131080, 1, 12, 5, 6, 512, 0, 6, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 1, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 0, 7, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 13, 1, 11, 0, 0, 2, 1, 10, 0, 0, 2, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 1, 20, 12, 7, 8200, 0, 12, 1, 7, 0, 0, 2, 4, 46, 180232, 0, 4, 1, 11, 16384, 0, 1, 10, 8, 147464, 0, 13, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 2, 4, 46, 180232, 0, 4, 1, 11, 16384, 0, 1, 4, 13, 16392, 0, 4, 1, 11, 16384, 0, 1, 3, 8, 155656, 1, 20, 3, 6, 0, 0, 4, 3, 17, 131082, 0, 4, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 131080, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 12, 2, 11, 0, 1, 20, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 15, 15, 65544, 1, 24, 3, 13, 8, 0, 5, 6, 6, 524288, 0, 9, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 3, 17, 131080, 1, 24, 6, 13, 8, 0, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8200, 3, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 0, 7, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 2, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 0, 9, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 20, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 17, 13, 8, 1, 24, 12, 7, 8200, 0, 12, 1, 7, 0, 0, 2, 1, 11, 16384, 0, 1, 4, 46, 180232, 0, 4, 1, 11, 16384, 0, 1, 4, 13, 16392, 0, 4, 1, 11, 16384, 0, 1, 8, 8, 155656, 1, 24, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 10, 0, 0, 1, 2, 11, 0, 1, 24, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 1, 22, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 1, 24, 2, 6, 512, 0, 3, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 17, 8, 131080, 0, 20, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 11, 8, 196616, 1, 28, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 2, 22, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 1, 24, 12, 7, 8200, 0, 12, 1, 7, 0, 0, 2, 1, 11, 16384, 0, 1, 4, 46, 180232, 0, 4, 1, 11, 16384, 0, 1, 4, 13, 16392, 0, 4, 1, 11, 16384, 0, 1, 8, 8, 155656, 1, 24, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 10, 0, 0, 1, 2, 11, 0, 1, 24, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 3, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 6, 512, 0, 3, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 8, 8, 139272, 0, 11, 2, 11, 0, 1, 20, 3, 6, 0, 0, 5, 4, 17, 10, 0, 6, 4, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 20, 8, 131080, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 4, 17, 8, 0, 4, 2, 11, 0, 1, 20, 2, 6, 512, 0, 3, 4, 17, 8, 0, 4, 1, 11, 0, 0, 1, 7, 8, 139272, 1, 24, 6, 6, 512, 0, 7, 4, 17, 8, 3, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 2, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 11, 0, 0, 3, 11, 7, 8200, 0, 11, 1, 7, 0, 3, 8, 4, 2, 8200, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 19, 5, 8200, 0, 20, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 8, 1, 4, 2, 6, 0, 0, 3, 9, 8, 425994, 0, 11, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 9, 3, 65544, 0, 10, 2, 41, 8, 1, 8, 5, 6, 512, 0, 6, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 8, 8, 131080, 1, 12, 5, 6, 512, 0, 6, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 1, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 18, 2, 11, 0, 1, 20, 3, 6, 0, 0, 5, 4, 17, 10, 0, 6, 4, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 25, 8, 131080, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 4, 17, 8, 1, 20, 2, 6, 512, 0, 3, 4, 17, 8, 0, 4, 1, 11, 0, 0, 1, 7, 8, 139272, 1, 24, 6, 6, 512, 0, 7, 4, 17, 8, 3, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 2, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 8, 2, 8, 0, 9, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 1, 20, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 17, 13, 8, 1, 24, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 1, 10, 0, 1, 24, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 1, 22, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 1, 17, 10, 0, 3, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 1, 24, 2, 6, 512, 0, 3, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 17, 8, 131080, 0, 20, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 11, 8, 196616, 1, 28, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 2, 22, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 1, 24, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 1, 10, 0, 1, 24, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 3, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 0, 7, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 13, 1, 11, 0, 0, 2, 1, 10, 0, 0, 2, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 20, 6, 6, 512, 0, 7, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 15, 15, 65544, 1, 24, 3, 13, 8, 0, 5, 6, 6, 524288, 0, 9, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 1, 24, 6, 13, 8, 0, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8200, 3, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 0, 7, 2, 11, 0, 1, 20, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 20, 6, 6, 512, 0, 7, 4, 2, 8200, 2, 16, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 0, 5, 2, 11, 0, 0, 3, 11, 7, 8200, 0, 11, 1, 7, 0, 3, 8, 4, 2, 8200, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 13, 5, 8200, 0, 14, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 0, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 9, 5, 8200, 0, 10, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 2, 8, 393226, 0, 4, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 10, 15, 65544, 0, 11, 2, 41, 8, 0, 5, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 13, 4, 13, 8, 0, 9, 5, 13, 8, 0, 10, 4, 13, 8, 0, 9, 17, 13, 8, 0, 22, 6, 13, 8, 0, 12, 1, 11, 0, 0, 2, 4, 46, 131080, 2, 8, 57, 0, 0, 1, 8, 80, 0, 0, 1, 8, 87, 0, 0, 1, 8, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 1, 12, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 5, 13, 8, 1, 12, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 12, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 3, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 12, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 18, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 15, 8, 131080, 2, 12, 75, 0, 0, 1, 12, 46, 0, 0, 1, 12, 2, 6, 512, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 1, 16, 6, 6, 512, 0, 7, 4, 23, 0, 4, 8, 71, 0, 0, 1, 8, 8, 5, 8200, 0, 8, 2, 11, 0, 0, 2, 2, 8, 270600, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 8, 393224, 0, 7, 1, 11, 0, 0, 1, 3, 8, 270600, 0, 7, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 5, 8, 393224, 0, 7, 1, 11, 0, 0, 1, 3, 8, 270600, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 5, 8200, 0, 3, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 0, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 10, 5, 8200, 0, 11, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 11, 8, 393226, 0, 13, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 10, 15, 65544, 0, 11, 2, 41, 8, 0, 5, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 4, 2, 8200, 0, 5, 18, 4, 8, 0, 19, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 8, 393224, 0, 9, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 5, 8, 393224, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 5, 8200, 0, 4, 3, 6, 0, 0, 4, 10, 15, 65544, 0, 11, 2, 41, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 4, 47, 8, 0, 6, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 18, 4, 8, 0, 19, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 8, 393224, 0, 9, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 5, 8, 393224, 4, 0, 2, 6, 0, 0, 3, 18, 4, 10, 0, 19, 3, 6, 0, 0, 4, 4, 12, 32778, 0, 6, 10, 15, 65544, 0, 11, 2, 41, 0, 0, 5, 3, 6, 0, 0, 4, 5, 12, 32778, 0, 7, 10, 15, 65544, 0, 11, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 4, 37, 0, 0, 1, 4, 2, 0, 0, 1, 4, 45, 0, 0, 1, 4, 102, 0, 0, 1, 4, 83, 0, 0, 1, 4, 37, 0, 0, 1, 4, 2, 0, 0, 1, 4, 88, 0, 0, 1, 4, 20, 0, 0, 1, 4, 2, 6, 512, 0, 3, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 7, 8, 139272, 0, 10, 2, 11, 0, 0, 3, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 7, 8, 139272, 0, 10, 2, 11, 0, 0, 3, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 0, 3, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 5, 13, 8, 1, 8, 74, 0, 0, 1, 8, 3, 6, 0, 0, 4, 16, 17, 10, 0, 17, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 3, 8, 270600, 0, 4, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 1, 8, 8, 434184, 0, 12, 1, 12, 10, 0, 4, 1, 12, 10, 0, 4, 1, 12, 8, 0, 2, 2, 11, 0, 0, 3, 1, 12, 8, 1, 12, 4, 2, 8200, 0, 5, 2, 6, 512, 0, 3, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 2, 11, 0, 0, 3, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 0, 8, 2, 11, 0, 0, 2, 5, 2, 8200, 1, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 3, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 5, 1, 11, 0, 0, 1, 3, 8, 270344, 0, 4, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 1, 12, 4, 2, 8200, 0, 5, 4, 17, 10, 0, 6, 2, 11, 0, 0, 3, 4, 17, 8, 3, 8, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 12, 17, 10, 0, 14, 1, 11, 0, 1, 12, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 2, 11, 0, 0, 2, 16, 17, 8, 0, 17, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 9, 8, 434184, 0, 12, 1, 12, 10, 0, 3, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 0, 12, 1, 12, 8, 2, 12, 3, 6, 0, 0, 4, 26, 17, 10, 0, 27, 1, 11, 0, 0, 2, 12, 17, 8, 0, 13, 1, 11, 0, 0, 2, 1, 10, 0, 1, 12, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 26, 17, 8, 0, 26, 2, 11, 0, 1, 12, 4, 12, 32776, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 1, 12, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 26, 17, 8, 0, 26, 2, 11, 0, 1, 12, 5, 12, 32776, 0, 5, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 4, 4, 8, 5, 8200, 0, 8, 2, 11, 0, 0, 2, 3, 8, 270600, 0, 4, 4, 12, 33032, 0, 6, 5, 12, 33032, 3, 0, 21, 0, 1, 0, 21, 8, 15, 6145, 0, 8, 19, 0, 1, 1, 0, 3, 0, 1, 1, 0, 60, 0, 1, 0, 60, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 0, 35, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 10, 14, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2560, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 2, 6, 2560, 0, 2, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 8, 39, 18432, 0, 8, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 34, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 4, 33, 8232, 0, 6, 5, 33, 8232, 0, 7, 5, 33, 8232, 0, 6, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 51, 14, 32, 0, 51, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 16, 14, 32, 0, 18, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 9, 15, 65546, 0, 10, 2, 41, 10, 1, 4, 4, 13, 10, 0, 6, 6, 3, 8200, 0, 8, 2, 41, 8, 0, 3, 4, 15, 65544, 3, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 16, 14, 32, 0, 18, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 8, 5, 8200, 0, 9, 3, 6, 0, 0, 4, 9, 15, 65544, 0, 10, 2, 41, 8, 1, 4, 4, 6, 0, 0, 5, 4, 49, 262154, 0, 5, 1, 11, 0, 0, 3, 2, 41, 8, 0, 3, 4, 15, 65544, 2, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 425994, 0, 6, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 4, 47, 8, 0, 4, 2, 11, 0, 0, 2, 4, 49, 270344, 1, 8, 3, 6, 0, 0, 4, 4, 17, 10, 0, 5, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 5, 1, 11, 0, 0, 2, 4, 17, 8, 0, 4, 1, 11, 0, 0, 1, 8, 8, 8200, 0, 9, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 6, 8, 196616, 1, 8, 4, 17, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 16, 14, 32, 0, 18, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 13, 5, 8200, 0, 14, 3, 6, 0, 0, 4, 9, 15, 65544, 0, 10, 2, 41, 0, 2, 0, 80, 0, 0, 1, 0, 25, 0, 0, 1, 0, 80, 0, 0, 2, 0, 36, 0, 1, 0, 36, 10, 15, 6145, 0, 10, 2, 0, 1, 1, 0, 3, 0, 1, 1, 0, 78, 0, 1, 1, 0, 42, 0, 1, 0, 42, 9, 5, 6145, 0, 9, 4, 0, 1, 0, 4, 8, 15, 6145, 0, 8, 14, 0, 1, 1, 0, 19, 0, 1, 0, 19, 8, 15, 6145, 0, 8, 50, 0, 1, 1, 0, 3, 0, 1, 1, 0, 27, 0, 1, 1, 0, 45, 0, 1, 1, 0, 3, 0, 1, 1, 0, 59, 0, 1, 1, 0, 8, 0, 1, 0, 8, 28, 9, 6145, 0, 28, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 53, 0, 1, 1, 0, 15, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 10, 14, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 5, 14, 2048, 0, 5, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 79, 0, 1, 1, 0, 65, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 14, 14, 2048, 0, 14, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 7, 4, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 77, 0, 1, 1, 0, 17, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 26, 14, 2048, 0, 26, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 72, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 3, 39, 32, 0, 4, 4, 39, 32, 0, 7, 21, 39, 32, 0, 22, 1, 11, 32, 0, 2, 9, 14, 32, 0, 10, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 54, 0, 0, 1, 0, 55, 0, 0, 1, 0, 99, 0, 0, 1, 0, 91, 0, 0, 1, 0, 69, 0, 0, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 3, 39, 32, 0, 4, 3, 39, 32, 0, 6, 4, 39, 32, 0, 5, 11, 39, 32, 0, 13, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 7, 15, 65546, 1, 4, 5, 13, 10, 0, 7, 8, 15, 65544, 3, 0, 4, 6, 0, 0, 5, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 10, 8, 163850, 0, 12, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 8, 6, 6, 524288, 0, 9, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 1, 11, 524288, 0, 2, 4, 46, 163848, 0, 5, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 7, 15, 65544, 0, 8, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 3, 4, 33, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 65550, 0, 6, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 7, 15, 65544, 0, 10, 5, 13, 8, 0, 7, 8, 15, 65544, 0, 8, 2, 11, 0, 0, 2, 3, 8, 65548, 3, 4, 68, 0, 1, 1, 4, 13, 0, 1, 0, 13, 12, 15, 6145, 0, 12, 35, 0, 1, 0, 35, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 2, 10, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 41, 0, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 46, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 65550, 0, 14, 8, 12, 10, 0, 10, 5, 27, 0, 0, 7, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 7, 15, 65544, 0, 10, 5, 13, 8, 0, 7, 8, 15, 65544, 0, 8, 2, 11, 0, 0, 2, 13, 8, 65548, 0, 14, 8, 12, 8, 3, 4, 17, 0, 1, 0, 17, 8, 15, 6145, 0, 8, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 1, 17, 2050, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 7, 14, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 196618, 0, 9, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 3, 4, 31, 0, 1, 1, 4, 3, 0, 1, 1, 4, 56, 0, 1, 1, 4, 3, 0, 1, 1, 4, 15, 0, 1, 1, 4, 3, 0, 1, 1, 4, 63, 0, 1, 1, 4, 67, 0, 1, 1, 4, 61, 0, 1, 1, 4, 61, 0, 1, 1, 4, 73, 0, 1, 1, 4, 34, 0, 1, 1, 4, 3, 0, 1, 1, 4, 72, 0, 1, 1, 4, 46, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 54, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 56, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 229386, 0, 5, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 8, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 4, 12, 10, 0, 6, 1, 16, 8, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 8, 163848, 0, 6, 4, 12, 8, 0, 4, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 5, 8, 163850, 0, 7, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 4, 12, 131082, 0, 7, 4, 15, 65544, 1, 8, 77, 0, 0, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 8, 17, 32778, 0, 9, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 163848, 0, 12, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 5, 1, 12, 131082, 0, 3, 1, 11, 0, 0, 1, 11, 4, 65544, 0, 12, 1, 11, 0, 0, 1, 1, 12, 131080, 0, 3, 1, 11, 0, 0, 1, 9, 8, 8200, 0, 10, 5, 23, 0, 2, 8, 67, 0, 0, 1, 8, 3, 6, 0, 0, 4, 5, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 2, 8, 2, 6, 512, 0, 3, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 13, 1, 11, 0, 0, 2, 1, 10, 0, 1, 12, 2, 11, 0, 0, 3, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 13, 2, 11, 0, 0, 3, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 3, 8, 139272, 1, 12, 2, 11, 0, 0, 3, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8200, 0, 8, 1, 11, 0, 0, 1, 8, 8, 131080, 2, 12, 8, 17, 32776, 0, 9, 1, 11, 0, 0, 2, 5, 23, 0, 3, 8, 34, 0, 0, 1, 8, 2, 6, 512, 0, 3, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 196616, 0, 14, 2, 11, 0, 0, 3, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 8, 131080, 0, 8, 1, 11, 0, 0, 1, 7, 8, 139272, 1, 12, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 163848, 0, 12, 1, 11, 0, 0, 1, 8, 8, 172040, 0, 9, 1, 10, 0, 2, 8, 39, 0, 0, 1, 10, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 18, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 8, 8, 196616, 1, 12, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 3, 17, 32778, 0, 5, 3, 15, 8200, 0, 7, 1, 11, 0, 0, 2, 5, 17, 8, 0, 5, 1, 11, 0, 0, 1, 7, 8, 270600, 1, 12, 3, 6, 512, 0, 4, 1, 17, 10, 0, 2, 2, 6, 512, 0, 3, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 1, 16, 5, 6, 512, 0, 6, 1, 17, 8, 1, 20, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 0, 8, 2, 11, 0, 1, 24, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 8, 8, 172040, 0, 9, 1, 10, 0, 1, 24, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 4, 8, 172040, 0, 5, 1, 17, 8, 2, 20, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 2, 11, 0, 1, 20, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 9, 2, 65544, 0, 10, 2, 11, 0, 1, 24, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 4, 2, 8200, 0, 5, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 11, 1, 11, 0, 0, 2, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 4, 8, 139272, 1, 28, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 3, 8, 172040, 3, 22, 2, 11, 0, 0, 3, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 4, 8, 172040, 0, 5, 1, 17, 8, 4, 12, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 3, 17, 32778, 0, 4, 1, 11, 0, 0, 2, 8, 15, 65544, 0, 8, 2, 11, 0, 0, 2, 3, 8, 65548, 1, 12, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 8, 17, 32778, 0, 9, 1, 11, 0, 0, 2, 5, 23, 0, 2, 12, 3, 6, 512, 0, 4, 1, 17, 10, 0, 2, 2, 6, 512, 0, 3, 3, 17, 32776, 1, 16, 2, 6, 512, 0, 3, 8, 17, 32776, 0, 9, 2, 11, 0, 0, 3, 1, 17, 8, 0, 2, 2, 11, 0, 0, 3, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 1, 20, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 12, 17, 65676, 2, 16, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 1, 17, 8, 0, 1, 1, 11, 0, 0, 1, 9, 8, 65544, 2, 16, 8, 17, 32776, 0, 9, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 1, 17, 8, 1, 20, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 7, 2, 65544, 0, 8, 2, 11, 0, 0, 3, 5, 23, 0, 1, 20, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 6, 17, 10, 0, 8, 2, 11, 0, 1, 24, 1, 11, 0, 0, 1, 6, 17, 8, 0, 6, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 8, 8, 131080, 0, 11, 2, 11, 0, 0, 3, 6, 17, 8, 0, 6, 1, 11, 0, 0, 1, 6, 13, 8, 0, 6, 1, 11, 0, 0, 1, 3, 8, 131080, 0, 6, 1, 11, 0, 0, 2, 1, 10, 0, 2, 22, 2, 11, 0, 0, 3, 4, 23, 0, 4, 12, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 1, 11, 0, 0, 2, 3, 17, 32776, 1, 12, 6, 6, 512, 2, 8, 67, 0, 0, 1, 10, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 8, 8, 196616, 1, 12, 3, 6, 0, 0, 4, 10, 17, 10, 0, 11, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 16, 8, 131080, 1, 12, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 163848, 0, 12, 1, 11, 0, 0, 1, 8, 8, 172040, 0, 9, 10, 17, 8, 2, 8, 33, 0, 0, 1, 10, 4, 6, 512, 0, 5, 2, 6, 512, 0, 3, 8, 17, 32776, 1, 12, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 12, 17, 65676, 3, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 4, 12, 131080, 3, 4, 40, 0, 1, 1, 4, 3, 0, 1, 1, 4, 59, 0, 1, 0, 59, 8, 2, 6145, 0, 8, 1, 0, 1, 1, 4, 30, 0, 1, 1, 4, 3, 0, 1, 1, 4, 33, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 1, 17, 34818, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 19, 14, 2048, 0, 19, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 11, 14, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 3, 14, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 229386, 0, 5, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 5, 6, 512, 0, 6, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 6, 8, 196616, 0, 8, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 5, 1, 12, 131082, 0, 3, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 11, 8, 131080, 0, 13, 1, 11, 0, 0, 1, 3, 8, 139272, 1, 12, 4, 2, 8200, 0, 5, 3, 17, 10, 0, 5, 2, 11, 0, 1, 16, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 163848, 0, 12, 1, 11, 0, 0, 1, 8, 8, 172040, 0, 9, 3, 17, 8, 1, 16, 4, 23, 0, 2, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 3, 5, 23, 0, 4, 4, 46, 0, 1, 1, 4, 3, 0, 1, 1, 4, 30, 0, 1, 0, 30, 8, 2, 6145, 0, 8, 31, 0, 1, 1, 4, 16, 0, 1, 1, 4, 3, 0, 1, 1, 4, 66, 0, 1, 1, 4, 69, 0, 1, 1, 4, 44, 0, 1, 1, 4, 3, 0, 1, 1, 4, 39, 0, 1, 1, 4, 25, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 17, 34818, 0, 3, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 3, 14, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 18432, 0, 1, 1, 11, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 17, 34816, 0, 3, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 39, 2048, 0, 1, 1, 11, 18432, 0, 1, 1, 11, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 17, 34816, 0, 3, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 39, 2048, 0, 1, 1, 11, 18432, 0, 1, 1, 11, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 17, 34816, 0, 3, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 5, 14, 2048, 0, 5, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 39, 2048, 0, 1, 1, 11, 18432, 0, 1, 1, 11, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 229386, 0, 14, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 9, 12, 10, 0, 11, 1, 16, 8, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 14, 8, 163848, 0, 15, 9, 12, 8, 0, 9, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 14, 8, 163850, 0, 16, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 9, 12, 131082, 0, 12, 5, 15, 65544, 1, 8, 2, 6, 512, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 7, 8, 139272, 1, 12, 3, 6, 0, 0, 4, 6, 17, 10, 0, 7, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 3, 8, 229384, 1, 12, 12, 7, 8200, 0, 12, 1, 7, 0, 0, 2, 6, 17, 16392, 2, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 9, 12, 131080, 3, 4, 67, 0, 1, 1, 4, 25, 0, 1, 1, 4, 3, 0, 1, 1, 4, 62, 0, 1, 0, 62, 8, 2, 6145, 0, 8, 1, 0, 1, 1, 4, 55, 0, 1, 1, 4, 3, 0, 1, 1, 4, 29, 0, 1, 0, 29, 8, 2, 6145, 0, 8, 35, 0, 1, 1, 4, 19, 0, 1, 1, 4, 3, 0, 1, 1, 4, 67, 0, 1, 0, 67, 8, 2, 6145, 1, 4, 31, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 1, 4, 74, 0, 1, 1, 4, 62, 0, 1, 1, 4, 23, 0, 1, 1, 4, 3, 0, 1, 1, 4, 74, 0, 1, 1, 4, 71, 0, 1, 1, 4, 3, 0, 1, 1, 4, 27, 0, 1, 1, 4, 3, 0, 1, 1, 4, 39, 0, 1, 1, 4, 39, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 1, 17, 34818, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 11, 14, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 7, 14, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 17, 14, 18432, 0, 17, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 11, 14, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 21, 14, 18432, 0, 21, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 8, 14, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 23, 14, 18432, 0, 23, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 2, 14, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 16, 14, 18432, 0, 16, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 2, 14, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 11, 14, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 17, 34816, 0, 1, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 2, 14, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 11, 14, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 1, 39, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 229386, 0, 14, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 9, 12, 10, 0, 11, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 14, 8, 163848, 0, 15, 9, 12, 8, 0, 9, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 14, 8, 163850, 0, 16, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 9, 12, 131082, 0, 12, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 3, 6, 0, 0, 4, 9, 17, 131082, 0, 10, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 1, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 5, 23, 0, 1, 12, 4, 2, 8200, 0, 5, 1, 17, 131082, 0, 3, 2, 11, 0, 0, 3, 1, 17, 131080, 0, 1, 1, 11, 0, 0, 1, 16, 8, 196616, 3, 8, 43, 0, 0, 1, 8, 3, 6, 0, 0, 4, 13, 17, 10, 0, 14, 1, 11, 0, 0, 2, 9, 17, 131080, 0, 10, 9, 17, 131080, 0, 9, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 5, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 6, 8, 139272, 0, 8, 1, 11, 0, 0, 1, 4, 8, 8200, 1, 8, 3, 6, 0, 0, 4, 5, 17, 10, 0, 6, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 16, 8, 196616, 0, 18, 1, 11, 0, 0, 1, 6, 8, 139272, 0, 8, 1, 11, 0, 0, 1, 4, 8, 8200, 1, 8, 3, 6, 0, 0, 4, 1, 17, 163850, 0, 2, 1, 11, 0, 0, 2, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 10, 8, 163848, 1, 8, 1, 17, 163848, 0, 1, 1, 11, 0, 0, 1, 8, 8, 172040, 0, 9, 13, 17, 8, 0, 13, 1, 11, 0, 0, 1, 12, 8, 8200, 0, 13, 5, 17, 8, 2, 8, 32, 0, 0, 1, 8, 3, 6, 0, 0, 4, 3, 17, 131082, 0, 4, 1, 11, 0, 0, 2, 9, 12, 131080, 0, 9, 1, 11, 0, 0, 1, 16, 8, 196616, 1, 8, 2, 6, 512, 0, 3, 1, 11, 0, 0, 1, 3, 17, 131080, 0, 3, 1, 11, 0, 0, 1, 8, 8, 139272, 1, 12, 1, 17, 163848, 0, 1, 1, 11, 0, 0, 1, 13, 8, 172040, 0, 14, 3, 17, 131080, 0, 3, 1, 11, 0, 0, 1, 3, 8, 139272, 0, 6, 1, 11, 0, 0, 2, 1, 10, 0, 1, 12, 1, 17, 163848, 0, 1, 1, 11, 0, 0, 1, 4, 8, 172040, 0, 5, 4, 10, 0, 1, 12, 1, 17, 163848, 0, 1, 1, 11, 0, 0, 1, 17, 8, 172040, 0, 18, 3, 17, 131080, 3, 8, 4, 23, 0, 3, 4, 49, 0, 1, 0, 49, 12, 15, 6145, 0, 12, 10, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 5, 14, 2048, 0, 5, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 46, 0, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 16, 4, 2048, 0, 16, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 5, 14, 2048, 0, 5, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 16, 8, 229386, 0, 18, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 8, 15, 65544, 1, 8, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 3, 4, 50, 0, 1, 0, 50, 12, 15, 6145, 0, 12, 9, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 7, 15, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 1, 17, 2050, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 11, 14, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 17, 2048, 0, 1, 1, 11, 2048, 0, 1, 14, 4, 2048, 0, 14, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 50, 14, 32, 0, 50, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 14, 8, 65802, 0, 15, 4, 46, 10, 0, 6, 2, 11, 0, 0, 3, 8, 15, 65544, 1, 8, 4, 46, 8, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 3, 4, 35, 0, 1, 0, 35, 12, 15, 6145, 0, 12, 1, 0, 1, 0, 1, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 17, 14, 32, 0, 19, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 50, 14, 32, 0, 50, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 15, 8, 65802, 0, 16, 4, 46, 10, 0, 6, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 2, 17, 10, 0, 3, 1, 11, 0, 0, 2, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 4, 46, 8, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 17, 8, 65800, 0, 21, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 8, 6, 6, 524288, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 2, 17, 8, 3, 4, 55, 0, 1, 0, 55, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 36, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 8, 8, 196618, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 5, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 8, 8, 196616, 3, 4, 52, 0, 1, 0, 52, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 30, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 5, 8, 229386, 0, 7, 3, 6, 0, 0, 4, 4, 46, 163850, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 5, 8, 229384, 3, 4, 54, 0, 1, 0, 54, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 34, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 229386, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 10, 12, 10, 0, 12, 5, 27, 0, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 7, 8, 229384, 0, 8, 10, 12, 8, 3, 4, 58, 0, 1, 0, 58, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 42, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 229386, 0, 13, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 10, 12, 10, 0, 12, 5, 27, 0, 0, 7, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 11, 15, 15, 8200, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 11, 8, 229384, 0, 12, 10, 12, 8, 3, 4, 60, 0, 1, 0, 60, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 46, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 229386, 0, 15, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 10, 12, 10, 0, 12, 5, 27, 0, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 13, 8, 229384, 0, 14, 10, 12, 8, 3, 4, 64, 0, 1, 0, 64, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 54, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 17, 8, 229386, 0, 19, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 10, 12, 10, 0, 12, 5, 27, 0, 0, 7, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 11, 15, 15, 8200, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 17, 8, 229384, 0, 18, 10, 12, 8, 3, 4, 60, 0, 1, 0, 60, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 46, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 229386, 0, 15, 3, 6, 0, 0, 4, 4, 46, 163850, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 13, 8, 229384, 3, 4, 56, 0, 1, 0, 56, 12, 15, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 38, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 11, 14, 32, 0, 13, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 229386, 0, 11, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 12, 12, 10, 0, 14, 5, 27, 0, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 9, 8, 229384, 0, 10, 12, 12, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 5, 8, 393226, 0, 7, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 47, 8, 1, 8, 7, 15, 65544, 0, 10, 5, 13, 8, 0, 7, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 5, 8, 393224, 3, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 10, 8, 425994, 0, 12, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 6, 12, 131082, 0, 9, 4, 47, 8, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 10, 8, 425992, 0, 11, 1, 11, 0, 0, 1, 6, 12, 131080, 0, 6, 1, 11, 0, 0, 1, 5, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 4, 20, 0, 1, 0, 20, 8, 15, 6145, 0, 8, 18, 0, 1, 1, 4, 3, 0, 1, 1, 4, 46, 0, 1, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 4, 12, 131082, 0, 7, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 5, 17, 10, 0, 7, 3, 15, 8200, 0, 4, 5, 15, 65544, 0, 7, 1, 11, 0, 0, 2, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 4, 8, 270600, 1, 8, 3, 6, 0, 0, 4, 2, 17, 10, 0, 3, 1, 11, 0, 0, 2, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 5, 17, 264, 0, 7, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 8, 6, 6, 524288, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 2, 17, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 14, 14, 32, 0, 16, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 3, 8200, 0, 4, 2, 41, 0, 0, 4, 4, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 4, 20, 0, 1, 0, 20, 8, 15, 6145, 0, 8, 31, 0, 1, 1, 4, 3, 0, 1, 1, 4, 62, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 3, 12, 10, 0, 5, 3, 3, 8200, 0, 4, 2, 41, 0, 0, 4, 4, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 8, 5, 6, 512, 0, 6, 3, 12, 8, 1, 12, 3, 3, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 2, 8200, 0, 9, 4, 17, 131082, 0, 6, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 4, 8, 270348, 0, 5, 4, 17, 131080, 1, 12, 3, 3, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 2, 8200, 0, 6, 4, 17, 10, 0, 6, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 4, 8, 270348, 0, 5, 4, 17, 264, 5, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 15, 8200, 0, 4, 4, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 21, 0, 1, 0, 21, 5, 15, 6145, 0, 5, 4, 0, 1, 0, 4, 6, 15, 6145, 0, 6, 19, 0, 1, 0, 19, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 53, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 5, 12, 10, 0, 7, 3, 15, 8200, 0, 4, 4, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 5, 12, 8, 0, 5, 1, 11, 0, 0, 1, 13, 8, 65800, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 21, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 11, 15, 6145, 0, 11, 14, 0, 1, 0, 14, 5, 15, 6145, 0, 5, 4, 0, 1, 0, 4, 6, 15, 6145, 0, 6, 12, 0, 1, 1, 4, 3, 0, 1, 1, 4, 57, 0, 1, 1, 4, 83, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 8, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 15, 8, 65800, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 22, 14, 32, 0, 24, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 5, 8, 393226, 0, 7, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 47, 8, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 196616, 0, 13, 1, 11, 0, 0, 1, 15, 8, 65800, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 1, 16, 10, 0, 4, 5, 5, 8200, 0, 8, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 8, 4, 5, 8200, 0, 6, 1, 16, 8, 0, 3, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 24, 0, 1, 0, 24, 9, 15, 6145, 0, 9, 6, 0, 1, 0, 6, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 16, 0, 1, 0, 16, 11, 15, 6145, 0, 11, 29, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 131082, 0, 4, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 4, 8, 262156, 0, 5, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 0, 8, 1, 11, 0, 0, 1, 12, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 8, 15, 65544, 0, 10, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 16, 0, 1, 0, 16, 12, 15, 6145, 0, 12, 8, 0, 1, 0, 8, 11, 15, 6145, 1, 4, 3, 0, 1, 1, 4, 53, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 8, 15, 65544, 0, 10, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 7, 15, 65544, 0, 10, 5, 13, 8, 0, 7, 1, 12, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 29, 14, 32, 0, 31, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 8, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 11, 15, 6145, 0, 11, 9, 0, 1, 0, 9, 12, 15, 6145, 1, 4, 3, 0, 1, 1, 4, 53, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 8, 12, 10, 0, 10, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 8, 15, 65544, 1, 8, 8, 12, 8, 0, 8, 1, 11, 0, 0, 1, 5, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 6, 15, 8200, 0, 8, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 10, 15, 6145, 0, 10, 8, 0, 1, 0, 8, 11, 15, 6145, 1, 4, 3, 0, 1, 1, 4, 53, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 6, 15, 8200, 0, 8, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 4, 8, 262156, 0, 5, 8, 15, 65544, 0, 8, 2, 11, 0, 0, 2, 4, 8, 262156, 0, 5, 1, 12, 264, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 7, 5, 8200, 0, 8, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 3, 49, 262154, 0, 4, 1, 11, 0, 0, 2, 4, 9, 9224, 0, 4, 2, 11, 0, 0, 2, 7, 9, 8200, 0, 7, 2, 11, 0, 0, 2, 10, 3, 8200, 2, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 8, 8, 262158, 0, 9, 1, 12, 131082, 0, 4, 3, 27, 0, 0, 5, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 4, 47, 8, 0, 6, 4, 47, 8, 0, 4, 2, 11, 0, 0, 2, 3, 49, 270344, 1, 8, 2, 2, 8200, 0, 3, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 4, 8, 262156, 0, 5, 1, 12, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 7, 12, 5, 8200, 0, 13, 1, 16, 8, 0, 3, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 2, 6, 0, 0, 3, 9, 8, 262158, 0, 10, 1, 16, 10, 0, 3, 12, 5, 8200, 0, 13, 4, 49, 270344, 0, 5, 1, 11, 0, 0, 2, 1, 16, 8, 0, 4, 4, 12, 10, 0, 6, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 3, 17, 32778, 0, 4, 1, 11, 0, 0, 2, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 3, 8, 65548, 1, 8, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 6, 8, 425992, 0, 7, 4, 12, 264, 1, 8, 3, 17, 32776, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 7, 6, 5, 8200, 0, 7, 1, 16, 8, 0, 3, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 2, 6, 0, 0, 3, 6, 8, 425994, 0, 7, 1, 16, 10, 0, 3, 12, 5, 8200, 0, 13, 4, 49, 270344, 0, 5, 1, 11, 0, 0, 2, 1, 16, 8, 0, 5, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 4, 12, 10, 0, 6, 1, 16, 8, 1, 8, 4, 12, 8, 0, 4, 1, 11, 0, 0, 1, 9, 8, 270600, 0, 11, 1, 11, 0, 0, 1, 8, 8, 270600, 0, 9, 4, 6, 0, 0, 6, 1, 12, 10, 0, 3, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 10, 8, 425994, 0, 12, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 1, 12, 10, 0, 3, 1, 16, 8, 1, 8, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 9, 12, 163850, 0, 12, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 5, 2, 11, 0, 0, 2, 3, 8, 393224, 0, 4, 1, 11, 0, 0, 1, 1, 11, 0, 0, 1, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 6, 9, 12, 164104, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 6, 49, 262154, 0, 7, 1, 11, 0, 0, 2, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 5, 8, 393226, 0, 7, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 5, 8200, 0, 9, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 9, 8, 425994, 0, 11, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 14, 8, 12, 0, 15, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 6, 5, 8200, 0, 7, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 8, 393224, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 21, 14, 32, 0, 23, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 7, 5, 8200, 0, 8, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 7, 8, 262158, 0, 10, 2, 11, 0, 0, 3, 4, 47, 8, 1, 8, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 3, 8, 65548, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 4, 5, 8200, 0, 6, 2, 41, 8, 0, 3, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 1, 4, 56, 0, 1, 1, 4, 4, 0, 1, 0, 4, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 47, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 131082, 0, 4, 2, 41, 8, 0, 3, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 1, 8, 3, 3, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 2, 8200, 0, 9, 1, 12, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 4, 5, 8200, 0, 5, 7, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 1, 4, 50, 0, 1, 1, 4, 16, 0, 1, 0, 16, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 47, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 1, 8, 3, 3, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 2, 8200, 0, 6, 1, 12, 264, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 22, 14, 32, 0, 24, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 4, 5, 8200, 0, 6, 2, 41, 8, 0, 3, 7, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 1, 4, 56, 0, 1, 1, 4, 4, 0, 1, 0, 4, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 47, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 131082, 0, 4, 2, 41, 8, 0, 3, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 1, 8, 3, 3, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 2, 8200, 0, 9, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 7, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 23, 14, 32, 0, 25, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 4, 5, 8200, 0, 5, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 55, 0, 1, 1, 4, 3, 0, 1, 1, 4, 62, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 3, 3, 8200, 0, 4, 2, 41, 8, 0, 4, 4, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 4, 47, 8, 1, 8, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 10, 8, 8456, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 11, 15, 6145, 0, 11, 15, 0, 1, 0, 15, 5, 15, 6145, 0, 5, 1, 0, 1, 0, 1, 6, 15, 6145, 0, 6, 23, 0, 1, 0, 23, 11, 15, 6145, 0, 11, 5, 0, 1, 1, 4, 15, 0, 1, 0, 15, 7, 15, 6145, 0, 7, 8, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 17, 10, 0, 5, 3, 15, 8200, 0, 4, 5, 15, 65544, 0, 7, 1, 11, 0, 0, 2, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 4, 8, 270348, 0, 5, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 14, 8, 65800, 1, 8, 6, 6, 524288, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 3, 17, 264, 0, 5, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 5, 6, 0, 0, 6, 4, 15, 65544, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 8, 15, 6145, 0, 8, 9, 0, 1, 0, 9, 7, 15, 6145, 0, 7, 16, 0, 1, 0, 16, 8, 15, 6145, 0, 8, 17, 0, 1, 0, 17, 7, 15, 6145, 0, 7, 8, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 131082, 0, 4, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 3, 15, 8200, 0, 4, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 17, 10, 0, 5, 3, 15, 8200, 0, 4, 5, 15, 65544, 0, 7, 1, 11, 0, 0, 2, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 4, 8, 270348, 0, 5, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 9, 8, 196616, 1, 8, 6, 6, 524288, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 3, 17, 264, 0, 5, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 5, 6, 0, 0, 6, 4, 15, 65544, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 65544, 0, 9, 3, 6, 0, 0, 4, 2, 15, 8200, 0, 3, 4, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 11, 15, 6145, 0, 11, 15, 0, 1, 0, 15, 4, 15, 6145, 0, 4, 1, 0, 1, 0, 1, 6, 15, 6145, 0, 6, 23, 0, 1, 0, 23, 11, 15, 6145, 0, 11, 10, 0, 1, 1, 4, 10, 0, 1, 0, 10, 6, 15, 6145, 0, 6, 8, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 10, 0, 3, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 2, 15, 8200, 0, 3, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 2, 17, 10, 0, 4, 2, 15, 8200, 0, 3, 5, 15, 65544, 0, 7, 1, 11, 0, 0, 2, 2, 15, 8200, 0, 2, 2, 11, 0, 0, 2, 4, 8, 270348, 0, 5, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 14, 8, 65800, 1, 8, 6, 6, 524288, 0, 9, 2, 15, 8200, 0, 2, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 2, 15, 8200, 0, 2, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 2, 17, 264, 0, 4, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 5, 6, 0, 0, 6, 4, 15, 65544, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 2, 15, 8200, 0, 3, 4, 15, 65544, 1, 4, 15, 0, 1, 0, 15, 8, 15, 6145, 0, 8, 9, 0, 1, 0, 9, 6, 15, 6145, 0, 6, 16, 0, 1, 0, 16, 8, 15, 6145, 0, 8, 17, 0, 1, 0, 17, 6, 15, 6145, 0, 6, 8, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 4, 8, 262158, 0, 5, 1, 12, 131082, 0, 4, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 2, 15, 8200, 0, 3, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 2, 17, 10, 0, 4, 2, 15, 8200, 0, 3, 5, 15, 65544, 0, 7, 1, 11, 0, 0, 2, 2, 15, 8200, 0, 2, 2, 11, 0, 0, 2, 4, 8, 270348, 0, 5, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 9, 8, 196616, 1, 8, 6, 6, 524288, 0, 9, 2, 15, 8200, 0, 2, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 2, 15, 8200, 0, 2, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 2, 17, 264, 0, 4, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 5, 6, 0, 0, 6, 4, 15, 65544, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 7, 5, 8200, 0, 8, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 5, 49, 262154, 0, 6, 1, 11, 0, 0, 2, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 8, 8, 393226, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 196616, 2, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 10, 8, 393226, 0, 12, 4, 46, 131082, 0, 6, 6, 12, 163850, 0, 9, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 10, 8, 393224, 0, 11, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 6, 12, 163848, 0, 6, 1, 11, 0, 0, 1, 5, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 9, 5, 8200, 0, 10, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 2, 8, 393226, 0, 4, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 13, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 2, 6, 0, 0, 3, 4, 8, 393226, 0, 5, 1, 16, 10, 0, 3, 6, 5, 8200, 0, 9, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 1, 16, 8, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 7, 8, 196616, 0, 9, 1, 11, 0, 0, 1, 4, 8, 393224, 0, 5, 1, 12, 164104, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 5, 8200, 0, 3, 3, 6, 0, 0, 4, 7, 15, 65544, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 10, 5, 8200, 0, 11, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 11, 8, 393226, 0, 13, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 4, 2, 8200, 0, 5, 18, 4, 8, 0, 19, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 14, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 5, 8200, 0, 4, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 7, 15, 65544, 0, 9, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 18, 4, 8, 0, 19, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 14, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 15, 65544, 1, 8, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 6, 2, 11, 0, 4, 0, 31, 0, 1, 0, 31, 7, 27, 6145, 0, 7, 2, 0, 1, 1, 0, 3, 0, 1, 1, 0, 78, 0, 1, 1, 0, 81, 0, 1, 1, 0, 82, 0, 1, 1, 0, 27, 0, 1, 1, 0, 3, 0, 1, 1, 0, 75, 0, 1, 1, 0, 24, 0, 1, 0, 24, 7, 15, 6145, 0, 7, 36, 0, 1, 1, 0, 8, 0, 1, 0, 8, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 59, 0, 1, 1, 0, 8, 0, 1, 0, 8, 28, 9, 6145, 0, 28, 1, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 42, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 15, 14, 2048, 0, 15, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 3, 39, 32, 0, 4, 4, 39, 32, 0, 7, 21, 39, 32, 0, 22, 1, 11, 32, 0, 2, 6, 14, 32, 0, 7, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 44, 0, 0, 1, 0, 50, 0, 0, 1, 0, 96, 0, 0, 1, 0, 91, 0, 0, 1, 0, 69, 0, 0, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 3, 39, 32, 0, 4, 3, 39, 32, 0, 6, 4, 39, 32, 0, 5, 11, 39, 32, 0, 13, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 4, 15, 65546, 1, 4, 5, 13, 10, 0, 7, 5, 15, 65544, 3, 0, 78, 0, 1, 1, 0, 3, 0, 1, 1, 0, 63, 0, 1, 0, 63, 8, 15, 6145, 0, 8, 1, 0, 1, 1, 0, 35, 0, 1, 1, 0, 3, 0, 1, 1, 0, 40, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 1, 8232, 0, 7, 5, 33, 8232, 0, 7, 5, 33, 8232, 0, 7, 9, 33, 8232, 0, 11, 2, 33, 8232, 0, 3, 1, 21, 32, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 14, 14, 32, 0, 15, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 16, 15, 65546, 2, 0, 4, 6, 0, 0, 5, 4, 15, 65544, 1, 4, 76, 0, 0, 1, 4, 75, 0, 0, 1, 4, 6, 6, 524288, 0, 7, 2, 6, 0, 0, 3, 13, 8, 524302, 0, 14, 1, 12, 131082, 0, 5, 2, 27, 0, 0, 5, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 6, 6, 524288, 0, 9, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 5, 15, 65544, 0, 5, 2, 11, 0, 0, 2, 28, 8, 589836, 0, 29, 1, 12, 131080, 2, 4, 78, 0, 0, 1, 4, 2, 6, 0, 0, 3, 11, 8, 131082, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 5, 2, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 16, 8, 196616, 3, 4, 52, 0, 1, 1, 4, 3, 0, 1, 1, 4, 35, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 65, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 6, 15, 2048, 0, 6, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 11, 17, 2050, 0, 11, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 17, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 11, 17, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 65550, 0, 4, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 10, 5, 5, 8200, 0, 7, 1, 12, 131082, 0, 4, 1, 16, 8, 0, 3, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 6, 6, 524288, 0, 9, 1, 11, 0, 0, 1, 1, 11, 524288, 0, 2, 1, 12, 131080, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 0, 9, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 5, 6, 0, 0, 6, 5, 15, 65544, 0, 6, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 5, 6, 0, 0, 6, 4, 15, 65544, 3, 4, 2, 6, 0, 0, 3, 14, 8, 14, 0, 15, 5, 12, 163850, 0, 8, 3, 6, 0, 0, 4, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 8, 47, 0, 0, 1, 8, 56, 0, 0, 1, 8, 6, 6, 524288, 0, 9, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 1, 11, 524288, 0, 2, 5, 12, 163848, 0, 6, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 5, 15, 65544, 0, 6, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 4, 15, 65544, 3, 4, 26, 0, 1, 0, 26, 9, 15, 6145, 0, 9, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 15, 65544, 1, 8, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 3, 4, 49, 0, 1, 0, 49, 9, 15, 6145, 0, 9, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 34818, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 17, 34816, 0, 4, 1, 11, 2048, 0, 1, 13, 4, 2048, 0, 13, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 20, 4, 2048, 0, 20, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 20, 14, 32, 0, 22, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 229386, 0, 15, 3, 6, 0, 0, 4, 4, 46, 163850, 0, 6, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 5, 15, 65544, 1, 8, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 4, 46, 163848, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 3, 4, 13, 0, 1, 0, 13, 8, 27, 6145, 0, 8, 38, 0, 1, 1, 4, 3, 0, 1, 1, 4, 64, 0, 1, 1, 4, 67, 0, 1, 1, 4, 32, 0, 1, 1, 4, 3, 0, 1, 1, 4, 17, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 44, 14, 32, 1, 0, 49, 14, 32, 0, 49, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 6, 8, 196618, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 3, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 6, 8, 196616, 3, 4, 27, 0, 1, 0, 27, 12, 3, 6145, 0, 12, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 47, 0, 1, 1, 4, 4, 0, 1, 0, 4, 40, 17, 6277, 0, 40, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 48, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 61, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 15, 39, 18432, 0, 15, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 74, 0, 1, 1, 4, 30, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 44, 14, 32, 1, 0, 49, 14, 32, 0, 49, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 15, 8, 196618, 0, 17, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 3, 3, 8200, 0, 4, 2, 41, 0, 0, 4, 3, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 15, 8, 196616, 3, 4, 34, 0, 1, 0, 34, 11, 15, 6145, 0, 11, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 11, 4, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 27, 26, 8224, 0, 27, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 44, 14, 32, 1, 0, 49, 14, 32, 0, 49, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 196618, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 4, 8, 262156, 0, 5, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 12, 8, 196616, 3, 4, 75, 0, 1, 1, 4, 26, 0, 1, 1, 4, 3, 0, 1, 1, 4, 64, 0, 1, 1, 4, 50, 0, 1, 1, 4, 3, 0, 1, 1, 4, 75, 0, 1, 1, 4, 71, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 32, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 5, 26, 8224, 0, 6, 10, 39, 32, 0, 11, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 196618, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 6, 512, 0, 3, 3, 7, 8200, 0, 3, 1, 7, 0, 0, 2, 9, 39, 16384, 0, 10, 1, 11, 16384, 0, 2, 7, 14, 16384, 1, 12, 30, 0, 0, 1, 12, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 8, 8, 196616, 0, 11, 2, 11, 0, 0, 3, 16, 4, 8, 0, 17, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 1, 10, 4, 6, 512, 1, 12, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 8, 8, 196616, 0, 11, 2, 11, 0, 0, 4, 3, 7, 8200, 0, 3, 1, 7, 0, 0, 2, 3, 39, 16384, 0, 4, 4, 39, 16384, 0, 6, 9, 39, 16384, 0, 10, 1, 11, 16384, 0, 2, 6, 14, 16384, 0, 9, 2, 11, 0, 0, 3, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 6, 8, 131080, 0, 8, 1, 11, 0, 0, 1, 7, 8, 139272, 4, 4, 65, 0, 1, 1, 4, 3, 0, 1, 1, 4, 57, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 38, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 196618, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 196616, 3, 4, 2, 6, 0, 0, 3, 6, 8, 131082, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 6, 3, 65544, 0, 7, 2, 41, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 6, 13, 8, 3, 4, 44, 0, 1, 1, 4, 3, 0, 1, 1, 4, 55, 0, 1, 1, 4, 3, 0, 1, 1, 4, 42, 0, 1, 1, 4, 69, 0, 1, 1, 4, 86, 0, 1, 1, 4, 57, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 8, 8, 196618, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 8, 8, 131080, 3, 4, 68, 0, 1, 1, 4, 3, 0, 1, 1, 4, 75, 0, 1, 1, 4, 3, 0, 1, 1, 4, 12, 0, 1, 0, 12, 8, 2, 6145, 0, 8, 55, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 10, 14, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 12, 17, 2050, 0, 12, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 6, 17, 2048, 0, 6, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 3, 14, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 13, 17, 2050, 0, 13, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 13, 17, 2048, 0, 13, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 12, 17, 2050, 0, 12, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 6, 17, 2048, 0, 6, 1, 11, 2048, 0, 1, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 6, 17, 2180, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 2, 14, 18432, 0, 2, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 18, 17, 2050, 0, 18, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 12, 17, 2048, 0, 12, 1, 11, 2048, 0, 1, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 6, 17, 2180, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 18, 39, 18432, 0, 18, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 3, 26, 8224, 0, 4, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 9, 14, 32, 0, 10, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 6, 8, 196618, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 4, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 5, 17, 32778, 0, 6, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 1, 8, 3, 6, 0, 0, 4, 4, 17, 10, 0, 5, 1, 11, 0, 0, 2, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 9, 8, 425992, 1, 8, 4, 17, 8, 0, 4, 1, 11, 0, 0, 1, 8, 8, 8200, 0, 10, 1, 12, 10, 0, 3, 5, 6, 512, 0, 6, 1, 12, 8, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 9, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 9, 2, 65544, 0, 10, 2, 11, 0, 1, 16, 4, 2, 8200, 0, 5, 5, 17, 32776, 0, 5, 1, 11, 0, 0, 1, 7, 8, 196616, 2, 14, 2, 11, 0, 0, 3, 4, 2, 8200, 4, 4, 55, 0, 1, 1, 4, 3, 0, 1, 1, 4, 93, 0, 1, 1, 4, 90, 0, 1, 1, 4, 91, 0, 1, 1, 4, 4, 0, 1, 0, 4, 8, 2, 6145, 0, 8, 83, 0, 1, 1, 4, 19, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 34818, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 10, 14, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 3, 14, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 34818, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 12, 14, 2048, 0, 12, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 2, 14, 18432, 0, 2, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 28, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 16, 14, 32, 0, 18, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 9, 15, 65544, 0, 10, 2, 41, 0, 1, 8, 9, 15, 65544, 0, 12, 4, 13, 8, 0, 6, 4, 2, 8200, 0, 5, 1, 11, 0, 0, 1, 4, 46, 131080, 3, 4, 63, 0, 1, 1, 4, 3, 0, 1, 1, 4, 94, 0, 1, 1, 4, 26, 0, 1, 1, 4, 3, 0, 1, 1, 4, 12, 0, 1, 0, 12, 8, 2, 6145, 0, 8, 32, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 11, 14, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 11, 14, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 3, 14, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 3, 26, 8224, 0, 4, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 10, 14, 32, 0, 11, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 9, 8, 425992, 0, 11, 1, 11, 0, 0, 1, 8, 8, 8200, 0, 10, 1, 12, 10, 0, 3, 5, 6, 512, 0, 6, 1, 12, 8, 1, 12, 9, 3, 65544, 0, 9, 2, 11, 0, 0, 2, 6, 2, 65544, 0, 7, 1, 17, 131082, 0, 3, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 5, 1, 17, 131080, 1, 14, 2, 11, 0, 0, 3, 4, 2, 8200, 4, 4, 64, 0, 1, 1, 4, 3, 0, 1, 1, 4, 12, 0, 1, 1, 4, 3, 0, 1, 1, 4, 62, 0, 1, 1, 4, 30, 0, 1, 0, 30, 7, 2, 6145, 0, 7, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 38, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 20, 14, 2048, 0, 20, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 3, 14, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 2, 39, 18432, 0, 2, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 19, 14, 18432, 0, 19, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 2, 39, 18432, 0, 2, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 2, 39, 18432, 0, 2, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 20, 14, 18432, 0, 20, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 2, 39, 18432, 0, 2, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 2, 14, 18432, 0, 2, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 21, 14, 18432, 0, 21, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 2, 39, 18432, 0, 2, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 2, 14, 18432, 0, 2, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 6, 17, 2050, 0, 6, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 2, 11, 2048, 0, 2, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 8, 14, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 2, 39, 18432, 0, 2, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 19, 14, 32, 0, 20, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 12, 8, 196618, 0, 13, 1, 16, 10, 0, 4, 4, 46, 131082, 0, 6, 4, 12, 10, 0, 6, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 4, 15, 65544, 0, 6, 16, 15, 65544, 1, 4, 5, 6, 0, 1, 8, 1, 16, 8, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 2, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 13, 8, 131080, 0, 14, 4, 12, 8, 0, 4, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 13, 8, 131082, 0, 15, 4, 46, 131082, 0, 6, 4, 12, 131082, 0, 7, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 4, 15, 65544, 0, 6, 16, 15, 65544, 1, 8, 10, 4, 8, 0, 11, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 14, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 1, 12, 1, 11, 0, 0, 1, 3, 8, 8456, 0, 5, 1, 12, 10, 0, 3, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 7, 8, 196616, 1, 12, 1, 11, 0, 0, 1, 5, 8, 8200, 0, 6, 16, 15, 65544, 3, 4, 52, 0, 1, 1, 4, 3, 0, 1, 1, 4, 50, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 13, 14, 2048, 0, 13, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 7, 14, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 22, 0, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 16, 14, 18432, 0, 16, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 34, 0, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 17, 14, 18432, 0, 17, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 196618, 0, 12, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 8, 4, 46, 131082, 0, 6, 4, 12, 10, 0, 6, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 12, 8, 131080, 0, 13, 4, 12, 8, 0, 4, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 12, 8, 131082, 0, 14, 4, 46, 131082, 0, 6, 4, 12, 131082, 0, 7, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 10, 4, 8, 0, 11, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 14, 4, 12, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 13, 1, 11, 0, 0, 1, 7, 8, 139272, 3, 4, 53, 0, 1, 1, 4, 3, 0, 1, 1, 4, 50, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 18, 14, 2048, 0, 18, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 17, 14, 18432, 0, 17, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 18, 14, 18432, 0, 18, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 27, 0, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 10, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 8, 4, 46, 131082, 0, 6, 5, 12, 10, 0, 7, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 131080, 0, 11, 5, 12, 8, 0, 5, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 10, 8, 131082, 0, 12, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 10, 4, 8, 0, 11, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 3, 8, 270600, 0, 7, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 12, 1, 11, 0, 0, 1, 3, 8, 270600, 0, 6, 1, 11, 0, 0, 1, 7, 8, 139272, 3, 4, 68, 0, 1, 1, 4, 3, 0, 1, 1, 4, 39, 0, 1, 1, 4, 3, 0, 1, 1, 4, 16, 0, 1, 1, 4, 3, 0, 1, 1, 4, 6, 0, 1, 0, 6, 8, 2, 6145, 0, 8, 27, 0, 1, 1, 4, 55, 0, 1, 1, 4, 89, 0, 1, 1, 4, 66, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 96, 0, 1, 1, 4, 26, 0, 1, 1, 4, 3, 0, 1, 1, 4, 44, 0, 1, 1, 4, 3, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 18, 4, 8, 0, 19, 1, 11, 0, 0, 1, 8, 8, 8200, 0, 11, 6, 12, 10, 0, 8, 5, 12, 10, 0, 8, 6, 12, 8, 0, 6, 1, 11, 0, 0, 1, 2, 8, 8200, 0, 3, 5, 12, 8, 3, 4, 46, 0, 1, 1, 4, 3, 0, 1, 1, 4, 18, 0, 1, 1, 4, 3, 0, 1, 1, 4, 6, 0, 1, 0, 6, 8, 2, 6145, 0, 8, 27, 0, 1, 1, 4, 55, 0, 1, 1, 4, 70, 0, 1, 1, 4, 89, 0, 1, 1, 4, 89, 0, 1, 1, 4, 3, 0, 1, 1, 4, 39, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 21, 2080, 0, 1, 1, 21, 2080, 0, 1, 1, 21, 2080, 0, 1, 7, 26, 10272, 0, 7, 1, 45, 2080, 0, 1, 16, 39, 2080, 0, 16, 1, 45, 2080, 0, 1, 1, 21, 2080, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 11, 39, 18432, 0, 11, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 94, 0, 1, 1, 4, 25, 0, 1, 1, 4, 3, 0, 1, 1, 4, 40, 0, 1, 1, 4, 3, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 18, 14, 32, 0, 20, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 11, 8, 196618, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 17, 4, 8, 0, 18, 1, 11, 0, 0, 1, 8, 8, 8200, 0, 11, 6, 12, 131082, 0, 8, 6, 12, 10, 0, 9, 4, 2, 8200, 0, 5, 6, 12, 131080, 3, 4, 88, 0, 1, 1, 4, 3, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 6, 0, 1, 0, 6, 8, 2, 6145, 0, 8, 27, 0, 1, 1, 4, 6, 0, 1, 0, 6, 8, 2, 6145, 0, 8, 30, 0, 1, 1, 4, 6, 0, 1, 0, 6, 8, 2, 6145, 0, 8, 64, 0, 1, 1, 4, 65, 0, 1, 1, 4, 3, 0, 1, 1, 4, 39, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 5, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 18, 4, 8, 0, 19, 1, 11, 0, 0, 1, 8, 8, 8200, 0, 11, 6, 12, 10, 0, 8, 5, 12, 10, 0, 8, 6, 12, 8, 0, 6, 1, 11, 0, 0, 1, 3, 8, 8200, 0, 4, 5, 12, 8, 3, 4, 21, 0, 1, 0, 21, 11, 15, 6145, 0, 11, 32, 0, 1, 1, 4, 3, 0, 1, 1, 4, 56, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 8, 14, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 13, 14, 18432, 0, 13, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 196618, 0, 5, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 8, 4, 46, 131082, 0, 6, 4, 12, 10, 0, 6, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 8, 131080, 0, 6, 4, 12, 8, 0, 4, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 5, 8, 131082, 0, 7, 4, 46, 131082, 0, 6, 4, 12, 131082, 0, 7, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 3, 17, 32778, 0, 4, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 196616, 1, 8, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 4, 8, 229384, 0, 5, 4, 12, 131080, 1, 8, 3, 17, 32776, 3, 4, 21, 0, 1, 0, 21, 11, 15, 6145, 0, 11, 42, 0, 1, 1, 4, 3, 0, 1, 1, 4, 52, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 14, 14, 2048, 0, 14, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 14, 14, 18432, 0, 14, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 14, 8, 196618, 0, 15, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 9, 4, 46, 131082, 0, 6, 9, 12, 10, 0, 11, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 16, 9, 12, 8, 0, 9, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 15, 8, 131082, 0, 17, 4, 46, 131082, 0, 6, 9, 12, 131082, 0, 12, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 3, 17, 32778, 0, 4, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 196616, 1, 8, 3, 17, 32776, 0, 3, 1, 11, 0, 0, 1, 13, 8, 229384, 0, 14, 9, 12, 131080, 1, 8, 3, 17, 32776, 3, 4, 21, 0, 1, 0, 21, 11, 15, 6145, 0, 11, 42, 0, 1, 1, 4, 3, 0, 1, 1, 4, 52, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 8, 14, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 12, 14, 2048, 0, 12, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 2, 14, 18432, 0, 2, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 2, 14, 18432, 0, 2, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 14, 8, 196618, 0, 15, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 9, 4, 46, 131082, 0, 6, 9, 12, 10, 0, 11, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 15, 8, 131080, 0, 16, 9, 12, 8, 0, 9, 1, 11, 0, 0, 1, 6, 8, 401416, 3, 4, 2, 6, 0, 0, 3, 15, 8, 131082, 0, 17, 4, 46, 131082, 0, 6, 9, 12, 131082, 0, 12, 5, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 8, 17, 10, 0, 9, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 3, 8, 196616, 1, 8, 3, 6, 0, 0, 4, 10, 17, 131082, 0, 11, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 16, 8, 196616, 2, 8, 3, 6, 0, 0, 5, 12, 17, 10, 0, 14, 13, 17, 10, 0, 15, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 1, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 1, 16, 48, 0, 0, 1, 16, 3, 6, 0, 0, 4, 8, 17, 10, 0, 9, 1, 11, 0, 0, 2, 8, 17, 8, 0, 9, 1, 11, 0, 0, 2, 9, 12, 131080, 0, 9, 1, 11, 0, 0, 1, 3, 8, 196616, 0, 6, 1, 11, 0, 0, 2, 1, 10, 0, 1, 16, 3, 6, 0, 0, 4, 10, 17, 10, 0, 11, 1, 11, 0, 0, 2, 10, 17, 131080, 0, 10, 1, 11, 0, 0, 1, 4, 8, 139272, 1, 17, 8, 17, 8, 0, 10, 10, 17, 8, 2, 12, 4, 2, 8200, 0, 5, 18, 17, 131082, 0, 20, 2, 11, 0, 1, 16, 3, 6, 0, 0, 4, 8, 17, 10, 0, 9, 1, 11, 0, 0, 2, 8, 17, 8, 0, 9, 1, 11, 0, 0, 2, 9, 12, 131080, 0, 9, 1, 11, 0, 0, 1, 3, 8, 196616, 0, 6, 1, 11, 0, 0, 2, 18, 17, 131080, 0, 18, 1, 11, 0, 0, 1, 3, 8, 196616, 1, 16, 3, 6, 0, 0, 4, 13, 17, 10, 0, 14, 1, 11, 0, 0, 2, 10, 17, 131080, 0, 11, 2, 11, 0, 0, 2, 8, 17, 8, 0, 9, 1, 11, 0, 0, 2, 18, 17, 131080, 0, 18, 1, 11, 0, 0, 1, 3, 8, 196616, 0, 6, 1, 11, 0, 0, 1, 4, 8, 139272, 1, 17, 8, 17, 8, 0, 10, 13, 17, 8, 4, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 8, 17, 32778, 0, 9, 1, 11, 0, 0, 2, 7, 15, 65544, 0, 7, 2, 11, 0, 0, 2, 13, 8, 65548, 0, 14, 12, 17, 8, 1, 8, 8, 17, 32776, 0, 8, 1, 11, 0, 0, 1, 10, 8, 163848, 0, 12, 1, 11, 0, 0, 1, 6, 8, 434184, 0, 7, 13, 17, 264, 1, 8, 8, 17, 32776, 0, 8, 1, 11, 0, 0, 1, 13, 8, 229384, 0, 14, 9, 12, 131080, 1, 8, 8, 17, 32776, 3, 4, 34, 0, 1, 0, 34, 13, 3, 6145, 0, 13, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 68, 0, 1, 1, 4, 3, 0, 1, 1, 4, 68, 0, 1, 1, 4, 32, 0, 1, 1, 4, 3, 0, 1, 1, 4, 71, 0, 1, 1, 4, 70, 0, 1, 1, 4, 71, 0, 1, 1, 4, 20, 0, 1, 0, 20, 10, 2, 6145, 0, 10, 11, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 3, 0, 1, 1, 4, 70, 0, 1, 1, 4, 72, 0, 1, 1, 4, 49, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 9, 15, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 10, 17, 34818, 0, 10, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 14, 14, 2048, 0, 14, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 10, 4, 2048, 0, 10, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 33, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 10, 8, 196618, 0, 12, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 10, 15, 65544, 0, 11, 2, 41, 0, 1, 8, 3, 6, 0, 0, 4, 6, 17, 10, 0, 7, 1, 11, 0, 0, 2, 12, 4, 65544, 0, 13, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 1, 8, 10, 15, 65544, 1, 12, 4, 13, 8, 0, 6, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 1, 12, 6, 13, 8, 1, 12, 17, 13, 8, 0, 19, 17, 4, 8, 0, 18, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 0, 15, 6, 17, 8, 1, 16, 2, 11, 0, 0, 3, 16, 4, 8, 0, 17, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 1, 12, 5, 13, 8, 0, 7, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 6, 2, 8, 1, 12, 4, 13, 8, 0, 6, 5, 3, 8, 0, 5, 2, 11, 0, 0, 2, 4, 2, 8, 4, 4, 62, 0, 1, 0, 62, 9, 15, 6145, 1, 4, 11, 0, 1, 1, 4, 3, 0, 1, 1, 4, 75, 0, 1, 1, 4, 40, 0, 1, 1, 4, 3, 0, 1, 1, 4, 36, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 9, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 5, 15, 2048, 0, 5, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 2, 17, 34818, 0, 2, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 14, 14, 2048, 0, 14, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 4, 4, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 2, 39, 18432, 0, 2, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 14, 39, 18432, 0, 14, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 2, 39, 18432, 0, 2, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 5, 14, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 2, 39, 18432, 0, 2, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 5, 39, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 2, 39, 18432, 0, 2, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 196618, 0, 6, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 15, 65544, 0, 5, 2, 41, 0, 1, 8, 4, 15, 65544, 0, 7, 5, 13, 8, 0, 7, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 3, 4, 38, 0, 1, 0, 38, 11, 5, 6145, 0, 11, 26, 0, 1, 1, 4, 73, 0, 1, 1, 4, 73, 0, 1, 1, 4, 32, 0, 1, 0, 32, 9, 5, 6145, 0, 9, 9, 0, 1, 1, 4, 3, 0, 1, 1, 4, 29, 0, 1, 1, 4, 25, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 13, 14, 2048, 0, 13, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 34, 14, 32, 1, 0, 61, 14, 32, 0, 61, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 196618, 0, 9, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 7, 15, 65544, 0, 8, 2, 41, 0, 1, 8, 7, 15, 65544, 0, 10, 4, 13, 8, 0, 6, 4, 46, 131080, 3, 4, 76, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 24, 0, 1, 0, 24, 16, 4, 6145, 0, 16, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 15, 14, 2048, 0, 15, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 22, 14, 2048, 0, 22, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 8, 39, 18432, 0, 8, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 8, 8, 196618, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 15, 65544, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 4, 65544, 0, 9, 4, 46, 131080, 3, 4, 65, 0, 1, 1, 4, 3, 0, 1, 1, 4, 24, 0, 1, 0, 24, 24, 4, 6145, 0, 24, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 15, 14, 2048, 0, 15, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 16, 4, 2048, 0, 16, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 30, 14, 2048, 0, 30, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 8, 39, 18432, 0, 8, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 16, 8, 196618, 0, 18, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 15, 65544, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 16, 4, 65544, 0, 17, 4, 46, 131080, 3, 4, 74, 0, 1, 1, 4, 54, 0, 1, 1, 4, 3, 0, 1, 1, 4, 24, 0, 1, 0, 24, 20, 4, 6145, 0, 20, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 7, 15, 2048, 0, 7, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 26, 14, 2048, 0, 26, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 12, 39, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 18, 14, 18432, 0, 18, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 12, 8, 196618, 0, 14, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 7, 15, 65544, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 12, 4, 65544, 0, 13, 4, 46, 131080, 3, 4, 70, 0, 1, 1, 4, 3, 0, 1, 1, 4, 24, 0, 1, 0, 24, 17, 4, 6145, 0, 17, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 23, 14, 2048, 0, 23, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 9, 4, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 23, 14, 2048, 0, 23, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 9, 8, 196618, 0, 11, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 7, 15, 65544, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 9, 4, 65544, 0, 10, 4, 46, 131080, 3, 4, 60, 0, 1, 1, 4, 3, 0, 1, 1, 4, 47, 0, 1, 0, 47, 12, 49, 6145, 0, 12, 1, 0, 1, 0, 1, 14, 15, 6145, 0, 14, 13, 0, 1, 1, 4, 73, 0, 1, 1, 4, 3, 0, 1, 1, 4, 24, 0, 1, 0, 24, 16, 4, 6145, 0, 16, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 9, 14, 2048, 0, 9, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2560, 0, 3, 1, 39, 2048, 0, 1, 5, 17, 2050, 0, 5, 1, 39, 2048, 0, 1, 2, 6, 2560, 0, 2, 1, 39, 2048, 0, 1, 4, 17, 2048, 0, 4, 1, 11, 2048, 0, 1, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 22, 14, 2048, 0, 22, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 2, 6, 2560, 0, 2, 1, 39, 2048, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 2, 15, 2048, 0, 2, 1, 45, 2048, 0, 1, 5, 17, 2050, 0, 5, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 5, 17, 2180, 0, 5, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 8, 39, 2048, 0, 8, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 6, 14, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 39, 18432, 0, 5, 1, 11, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 4, 39, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 8, 8, 196618, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 7, 15, 65544, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 4, 65544, 0, 9, 4, 46, 131080, 3, 4, 60, 0, 1, 1, 4, 3, 0, 1, 1, 4, 85, 0, 1, 1, 4, 81, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 68, 0, 1, 1, 4, 72, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 20, 14, 18432, 0, 20, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 79, 0, 1, 1, 4, 44, 0, 1, 1, 4, 3, 0, 1, 1, 4, 38, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 6, 8, 196618, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 4, 65544, 0, 9, 4, 46, 131080, 0, 5, 1, 11, 0, 0, 1, 5, 8, 139272, 3, 4, 64, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 84, 0, 1, 1, 4, 3, 0, 1, 1, 4, 88, 0, 1, 1, 4, 91, 0, 1, 1, 4, 87, 0, 1, 1, 4, 87, 0, 1, 1, 4, 58, 0, 1, 1, 4, 3, 0, 1, 1, 4, 88, 0, 1, 1, 4, 91, 0, 1, 1, 4, 38, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 20, 14, 18432, 0, 20, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 50, 14, 18432, 0, 50, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 23, 14, 18432, 0, 23, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 30, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 17, 14, 32, 0, 19, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 10, 8, 196618, 0, 12, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 4, 27, 0, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 10, 4, 65544, 0, 11, 4, 46, 131080, 3, 4, 80, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 68, 0, 1, 1, 4, 72, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 19, 14, 18432, 0, 19, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 23, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 23, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 79, 0, 1, 1, 4, 23, 0, 1, 0, 23, 16, 4, 6145, 0, 16, 16, 0, 1, 0, 16, 10, 3, 6145, 0, 10, 11, 0, 1, 1, 4, 40, 0, 1, 0, 40, 6, 2, 6145, 0, 6, 1, 0, 1, 1, 4, 3, 0, 1, 1, 4, 75, 0, 1, 1, 4, 74, 0, 1, 1, 4, 75, 0, 1, 1, 4, 61, 0, 1, 1, 4, 51, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 196618, 0, 9, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 4, 65544, 0, 9, 4, 46, 131080, 0, 5, 1, 11, 0, 0, 1, 3, 8, 8456, 0, 5, 1, 12, 10, 0, 3, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 7, 8, 196616, 0, 10, 1, 11, 0, 0, 1, 9, 8, 8456, 0, 10, 5, 23, 0, 3, 4, 77, 0, 1, 1, 4, 3, 0, 1, 1, 4, 77, 0, 1, 1, 4, 21, 0, 1, 1, 4, 3, 0, 1, 1, 4, 68, 0, 1, 1, 4, 72, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 13, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 19, 14, 18432, 0, 19, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 23, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 12, 14, 18432, 0, 12, 1, 45, 18432, 0, 1, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 23, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 79, 0, 1, 1, 4, 23, 0, 1, 0, 23, 16, 4, 6145, 0, 16, 16, 0, 1, 0, 16, 10, 3, 6145, 0, 10, 11, 0, 1, 1, 4, 39, 0, 1, 0, 39, 6, 2, 6145, 0, 6, 1, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 6, 8, 196618, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 8, 4, 65544, 0, 9, 4, 46, 131080, 0, 5, 1, 11, 0, 0, 1, 3, 8, 8456, 0, 5, 1, 12, 10, 0, 3, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 6, 8, 196616, 0, 9, 1, 11, 0, 0, 1, 9, 8, 8456, 0, 10, 5, 23, 0, 3, 4, 81, 0, 1, 1, 4, 3, 0, 1, 1, 4, 51, 0, 1, 1, 4, 65, 0, 1, 1, 4, 3, 0, 1, 1, 4, 78, 0, 1, 1, 4, 45, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 4, 39, 32, 0, 6, 3, 39, 32, 0, 4, 1, 11, 32, 0, 2, 11, 14, 32, 0, 12, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 3, 39, 32, 0, 4, 4, 39, 32, 0, 7, 3, 39, 32, 0, 4, 1, 11, 32, 0, 2, 11, 14, 32, 0, 12, 1, 21, 32, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 2, 9, 2048, 0, 2, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 2, 9, 2048, 0, 2, 2, 11, 2048, 0, 2, 7, 9, 2048, 0, 7, 1, 45, 2048, 1, 4, 3, 0, 1, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 9, 17, 2050, 0, 9, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 6, 14, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 7, 4, 2048, 0, 7, 1, 45, 2048, 0, 1, 25, 14, 2048, 0, 25, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 9, 17, 2304, 0, 9, 1, 45, 2048, 0, 1, 1, 11, 2048, 0, 1, 6, 4, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 10, 39, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 23, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 11, 18432, 0, 1, 6, 39, 18432, 0, 6, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 5, 23, 18432, 0, 5, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 4, 7, 0, 1, 1, 4, 3, 0, 1, 1, 4, 14, 0, 1, 1, 4, 3, 0, 1, 1, 4, 79, 0, 1, 1, 4, 23, 0, 1, 0, 23, 24, 4, 6145, 0, 24, 16, 0, 1, 0, 16, 10, 3, 6145, 0, 10, 11, 0, 1, 1, 4, 43, 0, 1, 0, 43, 6, 2, 6145, 0, 6, 1, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 8, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 12, 14, 32, 0, 14, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 10, 8, 196618, 0, 12, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 16, 4, 65544, 0, 17, 4, 46, 131080, 0, 5, 1, 11, 0, 0, 1, 3, 8, 8456, 0, 5, 1, 12, 10, 0, 3, 1, 12, 8, 0, 1, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 13, 1, 11, 0, 0, 1, 9, 8, 8456, 0, 10, 5, 23, 0, 3, 4, 15, 0, 1, 0, 15, 18, 15, 6145, 0, 18, 8, 0, 1, 0, 8, 11, 15, 6145, 0, 11, 19, 0, 1, 1, 4, 15, 0, 1, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 17, 14, 32, 0, 19, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 8, 14, 32, 0, 9, 1, 21, 32, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 1, 11, 32, 0, 2, 50, 14, 32, 0, 50, 1, 21, 32, 1, 4, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 13, 8, 65802, 0, 14, 4, 46, 10, 0, 6, 3, 15, 8200, 0, 4, 4, 15, 65544, 0, 7, 2, 11, 0, 0, 3, 7, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 2, 17, 10, 0, 3, 1, 11, 0, 0, 2, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 8204, 0, 9, 4, 46, 264, 0, 6, 2, 6, 0, 0, 3, 1, 6, 0, 0, 1, 3, 6, 0, 0, 4, 5, 15, 65544, 1, 8, 3, 6, 0, 0, 4, 5, 17, 10, 0, 6, 1, 11, 0, 0, 2, 6, 6, 524288, 0, 9, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 8, 532492, 0, 9, 2, 17, 8, 1, 8, 7, 15, 65544, 0, 10, 5, 13, 8, 0, 7, 8, 15, 65544, 0, 8, 2, 11, 0, 0, 2, 4, 8, 262156, 0, 5, 5, 17, 264, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 5, 15, 65544, 0, 7, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 5, 15, 65544, 1, 8, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 9, 12, 163850, 0, 12, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 5, 2, 11, 0, 0, 2, 3, 8, 393224, 0, 4, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 7, 9, 12, 164104, 4, 0, 49, 0, 1, 0, 49, 11, 7, 6145, 0, 11, 10, 0, 1, 1, 0, 3, 0, 1, 1, 0, 6, 0, 1, 0, 6, 8, 15, 6145, 0, 8, 61, 0, 1, 1, 0, 4, 0, 1, 0, 4, 11, 5, 6145, 0, 11, 57, 0, 1, 1, 0, 41, 0, 1, 0, 41, 8, 15, 6145, 0, 8, 24, 0, 1, 1, 0, 78, 0, 1, 1, 0, 38, 0, 1, 0, 38, 9, 7, 6145, 0, 9, 9, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 4, 15, 2048, 0, 4, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 4, 17, 2050, 0, 4, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 2, 11, 2048, 0, 2, 3, 4, 2048, 0, 3, 1, 45, 2048, 0, 1, 13, 14, 2048, 0, 13, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 7, 7, 2048, 0, 7, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 4, 14, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 11, 18432, 0, 1, 7, 39, 18432, 0, 7, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 29, 0, 1, 1, 0, 30, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 7, 15, 65546, 0, 8, 2, 41, 10, 1, 4, 4, 13, 10, 0, 7, 2, 41, 8, 0, 3, 4, 15, 65544, 3, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 7, 15, 65544, 0, 8, 2, 41, 0, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 5, 5, 8200, 0, 5, 2, 11, 0, 0, 2, 3, 8, 401416, 0, 4, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 6, 1, 12, 164104, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 7, 5, 8200, 0, 8, 3, 6, 0, 0, 4, 7, 15, 65544, 0, 8, 2, 41, 0, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 13, 8, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 0, 5, 1, 11, 0, 0, 1, 7, 8, 131080, 0, 8, 1, 12, 164104, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 9, 5, 8200, 0, 10, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 2, 8, 393226, 0, 4, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 13, 2, 11, 0, 0, 3, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 2, 6, 0, 0, 3, 4, 8, 393226, 0, 5, 1, 16, 10, 0, 3, 6, 5, 8200, 0, 9, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 1, 16, 8, 1, 8, 3, 6, 0, 0, 4, 5, 17, 131082, 0, 6, 1, 11, 0, 0, 2, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 131080, 1, 8, 3, 6, 0, 0, 5, 10, 17, 10, 0, 12, 8, 17, 10, 0, 10, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 12, 4, 65544, 0, 13, 1, 11, 0, 0, 1, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 5, 13, 8, 1, 12, 4, 2, 8200, 0, 5, 6, 17, 10, 0, 8, 2, 11, 0, 1, 16, 6, 17, 8, 0, 6, 1, 11, 0, 0, 1, 4, 8, 393224, 0, 5, 1, 12, 164104, 1, 17, 6, 17, 8, 0, 6, 1, 11, 0, 0, 1, 3, 8, 131080, 0, 7, 6, 17, 8, 0, 6, 1, 11, 0, 0, 1, 11, 8, 196616, 2, 12, 4, 2, 8200, 0, 5, 2, 11, 0, 0, 4, 1, 10, 0, 0, 3, 5, 23, 0, 2, 8, 3, 6, 0, 0, 4, 5, 17, 131082, 0, 6, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 17, 131080, 0, 6, 10, 17, 8, 0, 10, 2, 11, 0, 2, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 15, 17, 32778, 0, 16, 1, 11, 0, 0, 2, 1, 10, 0, 1, 8, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 12, 17, 32778, 0, 13, 1, 11, 0, 0, 2, 1, 10, 0, 2, 8, 3, 6, 512, 0, 4, 1, 17, 10, 0, 2, 2, 6, 512, 0, 3, 1, 10, 0, 0, 1, 2, 11, 0, 0, 2, 5, 17, 131080, 0, 5, 1, 11, 0, 0, 1, 3, 8, 139272, 1, 12, 3, 6, 0, 0, 4, 6, 17, 10, 0, 7, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 8, 17, 8, 0, 11, 15, 4, 65544, 0, 16, 5, 17, 131080, 0, 6, 1, 17, 8, 0, 6, 4, 6, 512, 0, 7, 11, 4, 65544, 0, 12, 5, 17, 131080, 0, 6, 1, 17, 8, 1, 12, 2, 6, 512, 0, 3, 6, 17, 8, 1, 16, 2, 6, 512, 0, 3, 1, 17, 8, 0, 2, 1, 11, 0, 0, 2, 15, 17, 32776, 1, 20, 3, 6, 0, 0, 4, 7, 17, 131082, 0, 8, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 17, 131080, 0, 6, 15, 17, 32776, 0, 15, 2, 11, 0, 0, 2, 1, 17, 8, 1, 20, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 5, 8, 434184, 0, 6, 7, 17, 131080, 1, 20, 12, 17, 32776, 0, 13, 2, 11, 32768, 0, 3, 7, 17, 131080, 0, 7, 1, 11, 0, 0, 1, 3, 8, 139272, 3, 16, 61, 0, 0, 1, 16, 49, 0, 0, 1, 16, 15, 17, 32776, 0, 16, 1, 11, 0, 0, 2, 1, 17, 8, 0, 2, 1, 11, 0, 0, 2, 1, 10, 0, 2, 16, 3, 6, 0, 0, 4, 4, 17, 131082, 0, 5, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 17, 131080, 0, 6, 15, 17, 32776, 0, 15, 2, 11, 0, 2, 16, 2, 6, 512, 0, 3, 1, 11, 0, 0, 1, 8, 17, 8, 1, 20, 15, 17, 32776, 0, 16, 2, 11, 32768, 0, 3, 5, 6, 512, 0, 6, 4, 17, 131080, 1, 25, 4, 10, 0, 0, 6, 2, 11, 0, 0, 3, 1, 10, 0, 1, 25, 4, 10, 0, 0, 6, 3, 17, 131082, 0, 4, 1, 11, 0, 0, 5, 2, 11, 0, 0, 4, 2, 6, 512, 0, 3, 11, 4, 65544, 0, 12, 1, 11, 0, 0, 1, 3, 17, 131080, 0, 5, 2, 11, 0, 0, 3, 1, 10, 0, 1, 26, 2, 11, 0, 0, 3, 1, 10, 0, 6, 8, 2, 6, 512, 0, 3, 15, 17, 32776, 0, 16, 1, 11, 0, 0, 2, 5, 17, 131080, 0, 5, 1, 11, 0, 0, 1, 3, 8, 139272, 1, 12, 3, 6, 0, 0, 4, 7, 17, 131082, 0, 8, 1, 11, 0, 0, 2, 1, 11, 0, 0, 1, 5, 17, 131080, 0, 6, 15, 17, 32776, 0, 15, 2, 11, 0, 1, 12, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 5, 8, 434184, 0, 6, 7, 17, 131080, 1, 12, 12, 17, 32776, 0, 13, 2, 11, 32768, 0, 3, 7, 17, 131080, 0, 7, 1, 11, 0, 0, 1, 3, 8, 139272, 3, 8, 1, 12, 163848, 0, 1, 1, 11, 0, 0, 1, 11, 8, 434184, 0, 12, 12, 17, 32776, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 5, 8200, 0, 3, 3, 6, 0, 0, 4, 4, 15, 65544, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 10, 5, 8200, 0, 11, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 11, 8, 393226, 0, 13, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 7, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 4, 2, 8200, 0, 5, 18, 4, 8, 0, 19, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 14, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 5, 8200, 0, 4, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 5, 12, 131082, 0, 8, 4, 15, 65544, 0, 6, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 8, 3, 8200, 1, 8, 18, 4, 8, 0, 19, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 10, 8, 196616, 0, 14, 5, 12, 131080, 0, 5, 1, 11, 0, 0, 1, 10, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 4, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 5, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 24, 14, 32, 0, 26, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 3, 3, 8200, 0, 4, 2, 41, 0, 0, 4, 5, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 8, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 3, 27, 0, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 6, 15, 8200, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 15, 65544, 0, 4, 2, 11, 0, 0, 2, 3, 8, 65548, 0, 4, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 6, 3, 6, 0, 0, 4, 7, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 6, 8, 393226, 0, 8, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 4, 15, 65544, 1, 8, 4, 46, 131080, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 16, 14, 32, 0, 18, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 12, 5, 8200, 0, 13, 3, 6, 0, 0, 5, 2, 41, 8, 0, 3, 7, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 4, 49, 262154, 0, 5, 1, 11, 0, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 8, 49, 262154, 0, 9, 1, 11, 0, 0, 2, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 9, 8, 262410, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 8, 196616, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 16, 14, 32, 0, 18, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 2, 41, 10, 0, 4, 12, 5, 8200, 0, 13, 3, 6, 0, 0, 5, 2, 41, 8, 0, 3, 4, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 4, 49, 262154, 0, 5, 1, 11, 0, 0, 3, 2, 41, 8, 0, 3, 5, 15, 65544, 1, 4, 4, 6, 0, 0, 5, 8, 49, 262154, 0, 9, 1, 11, 0, 0, 2, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 6, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 9, 8, 262410, 0, 10, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 3, 4, 15, 65544, 0, 5, 2, 41, 8, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 4, 8, 196616, 4, 0, 11, 6, 0, 0, 11, 1, 7, 0, 0, 2, 8, 7, 10, 1, 46, 1, 11, 0, 1, 25, 1, 11, 0, 0, 2, 16, 14, 0, 0, 24, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 33, 3, 6, 0, 2, 12, 2, 6, 0, 0, 7, 4, 6, 0, 1, 22, 2, 6, 0, 0, 18, 4, 6, 0, 4, 25, 1, 11, 0, 0, 2, 16, 14, 0, 0, 24, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 33, 3, 6, 0, 2, 12, 2, 6, 0, 0, 7, 4, 6, 0, 1, 22, 2, 6, 0, 0, 18, 4, 6, 0, 4, 25, 1, 11, 0, 0, 2, 10, 14, 0, 0, 18, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 34, 3, 6, 0, 2, 12, 2, 6, 0, 0, 16, 4, 6, 0, 1, 22, 2, 6, 0, 0, 28, 4, 6, 0, 4, 25, 1, 11, 0, 0, 2, 10, 14, 0, 0, 18, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 34, 3, 6, 0, 2, 12, 2, 6, 0, 0, 16, 4, 6, 0, 1, 22, 2, 6, 0, 0, 28, 4, 6, 0, 6, 0, 8, 7, 8, 0, 8, 1, 7, 0, 0, 5, 7, 15, 81928, 0, 9, 4, 15, 81928, 1, 0, 8, 7, 8, 0, 8, 1, 7, 0, 0, 7, 7, 15, 81928, 0, 13, 4, 15, 81928, 1, 0, 8, 7, 8, 0, 8, 1, 7, 0, 0, 7, 3, 3, 24584, 0, 8, 4, 15, 81928, 0, 7, 4, 15, 81928, 1, 0, 8, 7, 8, 0, 8, 1, 7, 0, 0, 11, 3, 3, 24584, 0, 8, 4, 15, 81928, 0, 11, 4, 15, 81928, 1, 0, 8, 7, 8, 0, 8, 1, 7, 0, 0, 7, 3, 3, 24584, 0, 8, 4, 15, 81928, 0, 7, 7, 15, 81928, 2, 0, 11, 6, 0, 0, 11, 1, 7, 0, 0, 2, 15, 7, 10, 1, 46, 1, 11, 0, 1, 25, 1, 11, 0, 0, 2, 10, 14, 0, 0, 18, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 33, 3, 6, 0, 2, 12, 2, 6, 0, 0, 7, 4, 6, 0, 1, 22, 2, 6, 0, 0, 18, 4, 6, 0, 0, 11, 1, 11, 0, 4, 25, 1, 11, 0, 0, 2, 10, 14, 0, 0, 18, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 33, 3, 6, 0, 2, 12, 2, 6, 0, 0, 7, 4, 6, 0, 1, 22, 2, 6, 0, 0, 18, 4, 6, 0, 0, 4, 1, 11, 0, 4, 25, 1, 11, 0, 0, 2, 10, 14, 0, 0, 18, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 34, 3, 6, 0, 2, 12, 2, 6, 0, 0, 16, 4, 6, 0, 1, 22, 2, 6, 0, 0, 28, 4, 6, 0, 0, 11, 1, 11, 0, 4, 25, 1, 11, 0, 0, 2, 10, 14, 0, 0, 18, 1, 11, 0, 0, 2, 7, 14, 0, 1, 8, 4, 6, 0, 0, 34, 3, 6, 0, 2, 12, 2, 6, 0, 0, 16, 4, 6, 0, 1, 22, 2, 6, 0, 0, 28, 4, 6, 0, 0, 4, 1, 11, 0, 6, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 5, 7, 15, 81928, 0, 9, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 7, 7, 15, 81928, 0, 13, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 7, 7, 15, 81928, 0, 9, 3, 3, 24584, 0, 8, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 5, 7, 15, 81928, 0, 9, 8, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 5, 4, 15, 81928, 0, 6, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 7, 4, 15, 81928, 0, 10, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 7, 4, 15, 81928, 0, 6, 3, 3, 24584, 0, 8, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 5, 4, 15, 81928, 0, 6, 8, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 11, 4, 15, 81928, 0, 6, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 15, 4, 15, 81928, 0, 6, 3, 3, 24584, 0, 8, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 11, 4, 15, 81928, 0, 6, 8, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 7, 3, 3, 24584, 0, 8, 4, 15, 81928, 0, 7, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 11, 3, 3, 24584, 0, 8, 4, 15, 81928, 0, 11, 5, 15, 81928, 1, 0, 15, 7, 8, 0, 15, 1, 7, 0, 0, 7, 3, 3, 24584, 0, 8, 4, 15, 81928, 0, 7, 8, 15, 81928, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 14, 14, 32, 0, 15, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 7, 5, 8200, 0, 8, 3, 6, 0, 0, 4, 16, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 5, 26, 8224, 0, 6, 10, 39, 32, 0, 12, 20, 39, 32, 0, 21, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 3, 8, 393226, 0, 5, 4, 46, 131082, 0, 6, 1, 12, 163850, 0, 4, 3, 6, 0, 0, 4, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 9, 15, 8200, 0, 10, 2, 41, 0, 0, 5, 2, 11, 0, 0, 3, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 6, 49, 8200, 1, 8, 4, 46, 131080, 0, 4, 1, 11, 0, 0, 1, 11, 8, 393224, 0, 13, 1, 11, 0, 0, 1, 3, 8, 401416, 0, 4, 1, 12, 164104, 4, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 6, 26, 8224, 0, 7, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 9, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 14, 14, 32, 0, 15, 1, 21, 32, 1, 0, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 16, 15, 65544, 1, 4, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 5, 26, 8224, 0, 6, 10, 39, 32, 0, 11, 1, 21, 32, 1, 4, 2, 6, 0, 0, 3, 11, 8, 393226, 0, 13, 4, 46, 131082, 0, 6, 2, 11, 0, 0, 4, 3, 27, 0, 1, 8, 18, 14, 0, 4, 0, 61, 0, 1, 1, 0, 3, 0, 1, 1, 0, 81, 0, 1, 1, 0, 80, 0, 1, 1, 0, 21, 0, 1, 0, 21, 41, 4, 6145, 0, 41, 14, 0, 1, 1, 0, 69, 0, 1, 1, 0, 3, 0, 1, 1, 0, 41, 0, 1, 1, 0, 4, 0, 1, 0, 4, 44, 4, 6145, 0, 44, 28, 0, 1, 1, 0, 13, 0, 1, 1, 0, 3, 0, 1, 1, 0, 14, 0, 1, 1, 0, 3, 0, 1, 1, 0, 18, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 42, 2048, 0, 1, 1, 45, 2048, 0, 1, 7, 4, 2048, 0, 7, 1, 45, 2048, 0, 1, 13, 17, 2180, 0, 13, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 21, 2080, 0, 1, 1, 21, 2080, 0, 1, 3, 26, 10272, 0, 3, 1, 45, 2080, 0, 1, 4, 39, 2080, 0, 4, 1, 45, 2080, 0, 1, 1, 21, 2080, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 6, 2048, 0, 2, 1, 39, 2048, 0, 1, 4, 4, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 2, 9, 2048, 0, 2, 2, 11, 2048, 0, 2, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 9, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 23, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 11, 14, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 11, 2560, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 9, 14, 18432, 0, 9, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 23, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 24, 14, 2048, 0, 24, 1, 45, 2048, 0, 1, 1, 11, 2560, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 21, 14, 18432, 0, 21, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 2, 4, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 21, 2080, 0, 1, 1, 21, 2080, 0, 1, 3, 26, 10272, 0, 3, 1, 45, 2080, 0, 1, 3, 39, 2080, 0, 3, 1, 45, 2080, 0, 1, 4, 39, 2080, 0, 4, 1, 45, 2080, 0, 1, 1, 45, 2080, 0, 1, 1, 21, 2080, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 2, 6, 2048, 0, 2, 1, 39, 2048, 0, 1, 4, 4, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 77, 0, 1, 1, 0, 70, 0, 1, 1, 0, 36, 0, 1, 1, 0, 3, 0, 1, 1, 0, 20, 0, 1, 1, 0, 3, 0, 1, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 42, 2048, 0, 1, 1, 45, 2048, 0, 1, 7, 4, 2048, 0, 7, 1, 45, 2048, 0, 1, 13, 17, 2180, 0, 13, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 21, 2080, 0, 1, 1, 21, 2080, 0, 1, 3, 26, 10272, 0, 3, 1, 45, 2080, 0, 1, 7, 39, 2080, 0, 7, 1, 45, 2080, 0, 1, 1, 21, 2080, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 6, 2048, 0, 2, 1, 39, 2048, 0, 1, 4, 4, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 2, 11, 2048, 0, 2, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 2, 9, 2048, 0, 2, 2, 11, 2048, 0, 2, 6, 15, 2048, 0, 6, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 3, 9, 2048, 0, 3, 2, 11, 2048, 0, 2, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 1, 45, 2048, 0, 1, 4, 9, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 15, 2048, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 23, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 11, 14, 2048, 0, 11, 1, 45, 2048, 0, 1, 1, 11, 2560, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 6, 7, 2048, 0, 6, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 11, 18432, 0, 1, 9, 39, 18432, 0, 9, 1, 45, 18432, 0, 1, 10, 14, 18432, 0, 10, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 23, 0, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 3, 6, 2048, 0, 3, 1, 39, 2048, 0, 1, 8, 17, 2050, 0, 8, 1, 39, 2048, 0, 1, 1, 11, 2048, 0, 1, 1, 39, 2048, 0, 1, 4, 9, 2048, 0, 4, 2, 11, 2048, 0, 2, 8, 4, 2048, 0, 8, 1, 45, 2048, 0, 1, 27, 14, 2048, 0, 27, 1, 45, 2048, 0, 1, 1, 11, 2560, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 9, 7, 2048, 0, 9, 1, 7, 2048, 0, 1, 1, 45, 18432, 0, 1, 8, 39, 18432, 0, 8, 1, 45, 18432, 0, 1, 1, 39, 2048, 0, 1, 4, 39, 18432, 0, 4, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 3, 39, 18432, 0, 3, 1, 45, 18432, 0, 1, 16, 14, 18432, 0, 16, 1, 45, 18432, 0, 1, 1, 45, 18432, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 2, 39, 2048, 0, 2, 2, 4, 2048, 0, 2, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 1, 0, 1, 0, 1, 1, 45, 2048, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 1, 21, 2080, 0, 1, 1, 21, 2080, 0, 1, 3, 26, 10272, 0, 3, 1, 45, 2080, 0, 1, 3, 39, 2080, 0, 3, 1, 45, 2080, 0, 1, 7, 39, 2080, 0, 7, 1, 45, 2080, 0, 1, 1, 45, 2080, 0, 1, 1, 21, 2080, 1, 0, 3, 0, 1, 0, 3, 2, 0, 1, 0, 2, 1, 39, 2048, 0, 1, 2, 6, 2048, 0, 2, 1, 39, 2048, 0, 1, 4, 4, 2050, 0, 4, 1, 45, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 39, 2048, 0, 1, 1, 45, 2048, 0, 1, 1, 45, 2048, 1, 0, 7, 0, 1, 1, 0, 3, 0, 1, 1, 0, 75, 0, 1, 1, 0, 84, 0, 1, 1, 0, 34, 0, 1, 1, 0, 3, 0, 1, 1, 0, 105, 0, 1, 1, 0, 106, 0, 1, 1, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 8, 26, 8224, 0, 9, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 15, 14, 32, 0, 17, 5, 39, 32, 0, 6, 1, 11, 32, 0, 2, 7, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 8, 4, 65546, 0, 9, 1, 16, 10, 0, 3, 5, 5, 8200, 0, 6, 4, 15, 65544, 0, 7, 4, 12, 10, 0, 6, 1, 16, 8, 0, 3, 2, 11, 0, 0, 3, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 6, 49, 65544, 0, 7, 7, 15, 65544, 1, 4, 3, 6, 0, 0, 4, 4, 17, 131082, 0, 5, 1, 11, 0, 0, 2, 4, 12, 8, 0, 4, 1, 11, 0, 0, 1, 6, 8, 401416, 1, 4, 2, 6, 512, 0, 3, 4, 17, 131080, 0, 4, 1, 11, 0, 0, 1, 9, 8, 196616, 0, 11, 1, 11, 0, 0, 1, 8, 8, 196616, 1, 8, 3, 2, 8200, 0, 4, 2, 9, 65544, 0, 2, 2, 11, 0, 0, 2, 14, 7, 8, 0, 14, 1, 7, 0, 0, 2, 2, 9, 81928, 0, 2, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 9, 3, 81928, 0, 9, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 12, 2, 81928, 0, 14, 36, 14, 16384, 1, 6, 4, 6, 512, 1, 8, 3, 9, 8, 0, 3, 2, 11, 0, 0, 2, 4, 9, 65544, 0, 4, 2, 11, 0, 0, 2, 8, 4, 8, 0, 9, 4, 17, 131080 ], "resultId": "9" } } 08:19:56.905 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "26/31 (rusttype + 2 more)", "percentage": 83 } } } 08:19:56.959 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "27/31 (crossterm + 1 more)", "percentage": 87 } } } 08:19:56.970 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "28/31 (nalgebra)", "percentage": 90 } } } 08:19:57.415 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "29/31 (nalgebra_glm)", "percentage": 93 } } } 08:19:57.423 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "message": "30/31 (grafix_toolbox)", "percentage": 96 } } } 08:19:57.563 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "cancellable": false, "kind": "report", "percentage": 100 } } } 08:19:57.563 Server { "jsonrpc": "2.0", "method": "$/progress", "params": { "token": "rustAnalyzer/Indexing", "value": { "kind": "end" } } } 08:19:58.720 Client { "id": "{f3e8d0df-27ff-45a8-8c54-db207e296b41}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 21, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:59.640 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{f3e8d0df-27ff-45a8-8c54-db207e296b41}" } } 08:19:59.649 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{f3e8d0df-27ff-45a8-8c54-db207e296b41}", "jsonrpc": "2.0" } 08:19:59.811 Client { "id": "{b656d7a8-de7e-462b-811c-8208b1050239}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 24, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:19:59.902 Client { "id": "{af3733bc-3e18-4a3c-a3e4-b3a635b56343}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 24, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:00.039 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{b656d7a8-de7e-462b-811c-8208b1050239}" } } 08:20:00.039 Client { "id": "{75e0d59d-b76a-4a0c-906a-0c2427a7853b}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 24, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:00.046 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{b656d7a8-de7e-462b-811c-8208b1050239}", "jsonrpc": "2.0" } 08:20:00.285 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{75e0d59d-b76a-4a0c-906a-0c2427a7853b}" } } 08:20:00.286 Client { "id": "{96145b14-e354-44eb-8c9d-63248b3796b3}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 24, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:00.295 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{75e0d59d-b76a-4a0c-906a-0c2427a7853b}", "jsonrpc": "2.0" } 08:20:00.952 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{96145b14-e354-44eb-8c9d-63248b3796b3}" } } 08:20:00.952 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{af3733bc-3e18-4a3c-a3e4-b3a635b56343}" } } 08:20:00.952 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{96145b14-e354-44eb-8c9d-63248b3796b3}" } } 08:20:00.953 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{96145b14-e354-44eb-8c9d-63248b3796b3}", "jsonrpc": "2.0" } 08:20:00.961 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{af3733bc-3e18-4a3c-a3e4-b3a635b56343}", "jsonrpc": "2.0" } 08:20:01.150 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{96145b14-e354-44eb-8c9d-63248b3796b3}" } } 08:20:01.150 Client { "id": "{b764788f-ec70-4383-af8c-93329d84f0be}", "jsonrpc": "2.0", "method": "textDocument/definition", "params": { "position": { "character": 10, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:01.214 Client { "id": "{45b46263-f128-421b-b120-032699e76cb9}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 10, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:02.308 Server { "id": "{5c09c794-11a5-4915-bf7f-8a0d7ad83e3d}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "#[allow(non_upper_case_globals)]\npub const mesh__2d_screen_vs:$crate::uses::GL::macro_uses::InlineShader = $crate::uses::GL::macro_uses::InlineShader(stringify!(mesh__2d_screen_vs),const_format::concatcp!($crate::uses::GL::unigl::GLSL_VERSION,r\"layout(location = 0) in vec4 Position;\n\tout vec2 glTexCoord;\n\n\tvoid main() {\n\t\tgl_Position = vec4(Position.xy, 0, 1);\n\t\tglTexCoord = Position.zw;\n\t}\",));", "range": { "end": { "character": 2, "line": 9 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs", "version": 0 } } ] }, "kind": "refactor.inline", "title": "Inline macro" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n SHADER!(\n\t mesh__2d_screen_vs,\n\t r\"layout(location = 0) in vec4 Position;\n\tout vec2 glTexCoord;\n\n\tvoid main() {\n\t\tgl_Position = vec4(Position.xy, 0, 1);\n\t\tglTexCoord = Position.zw;\n\t}\"\n );\n\n SHADER!(\n\t mesh__2d_screen_ps,\n\t r\"in vec2 glTexCoord;\n\tlayout(location = 0) out vec4 glFragColor;\n\tuniform sampler2D tex;\n\n\tvoid main() { glFragColor = texture(tex, glTexCoord); }\"\n );\n}", "range": { "end": { "character": 2, "line": 18 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs", "version": 0 } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "kind": "rename", "newUri": "file:///_/code/rust/toolbox/glsl/inline_shaders/mod.rs", "oldUri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs" } ] }, "kind": "refactor", "title": "Convert inline_shaders.rs to inline_shaders/mod.rs" } ] } 08:20:02.528 Server { "id": "{b764788f-ec70-4383-af8c-93329d84f0be}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 12, "line": 251 }, "start": { "character": 8, "line": 251 } }, "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } ] } 08:20:02.529 Client { "jsonrpc": "2.0", "method": "$/cancelRequest", "params": { "id": "{45b46263-f128-421b-b120-032699e76cb9}" } } 08:20:02.544 Server { "error": { "code": -32800, "message": "canceled by client" }, "id": "{45b46263-f128-421b-b120-032699e76cb9}", "jsonrpc": "2.0" } 08:20:02.768 Client { "id": "{02ac2fcd-d469-450c-9fde-4f238279aa0d}", "jsonrpc": "2.0", "method": "textDocument/documentHighlight", "params": { "position": { "character": 8, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:02.777 Server { "id": "{a8b11980-fdf7-4a49-8b7c-6d94da456e64}", "jsonrpc": "2.0", "result": { "data": [ 0, 0, 3, 6, 0, 0, 4, 5, 6, 66560, 0, 5, 2, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 1, 0, 3, 6, 0, 0, 4, 5, 6, 66560, 0, 5, 2, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 1, 0, 3, 6, 0, 0, 4, 4, 9, 8200, 0, 4, 2, 11, 0, 0, 2, 7, 15, 8200, 2, 0, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 4, 9, 65538, 1, 1, 3, 6, 0, 0, 4, 5, 6, 65536, 0, 5, 2, 11, 0, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 5, 4, 65538, 0, 6, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 6, 4, 0, 0, 8, 1, 11, 0, 0, 1, 4, 8, 139264, 0, 6, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 11, 3, 0, 0, 11, 2, 11, 0, 0, 2, 5, 2, 0, 0, 7, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 1, 11, 0, 0, 1, 6, 8, 8456, 0, 7, 12, 17, 132, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 6, 4, 65538, 0, 7, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 6, 4, 0, 0, 8, 1, 11, 0, 0, 1, 4, 8, 139264, 0, 6, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 11, 3, 0, 0, 11, 2, 11, 0, 0, 2, 6, 2, 0, 0, 8, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 1, 11, 0, 0, 1, 6, 8, 8456, 0, 7, 12, 17, 132, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 4, 65538, 0, 8, 4, 12, 2, 0, 6, 4, 6, 0, 0, 5, 12, 5, 65536, 1, 2, 3, 6, 0, 0, 5, 1, 17, 2, 0, 3, 4, 17, 2, 0, 6, 5, 17, 2, 0, 7, 1, 11, 0, 0, 2, 4, 12, 0, 0, 4, 1, 11, 0, 0, 1, 3, 8, 327936, 1, 2, 6, 4, 0, 0, 8, 1, 11, 0, 0, 1, 4, 8, 139264, 0, 6, 1, 17, 0, 0, 3, 11, 3, 0, 0, 11, 2, 11, 0, 0, 2, 6, 2, 0, 0, 7, 5, 17, 0, 0, 8, 4, 17, 0, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8456, 0, 7, 12, 17, 132, 3, 1, 4, 6, 0, 0, 5, 4, 49, 2, 0, 5, 1, 11, 0, 0, 3, 7, 15, 8200, 0, 9, 3, 15, 8200, 0, 4, 2, 27, 0, 0, 5, 3, 27, 0, 1, 1, 3, 6, 0, 0, 4, 5, 6, 0, 0, 6, 12, 5, 65538, 1, 2, 2, 6, 0, 0, 3, 3, 8, 327938, 0, 4, 4, 46, 2, 0, 6, 2, 11, 0, 0, 3, 4, 49, 0, 2, 1, 4, 6, 0, 0, 5, 1, 16, 2, 0, 3, 4, 5, 8200, 0, 5, 3, 15, 8200, 0, 4, 2, 27, 0, 0, 6, 1, 16, 2, 0, 3, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 1, 16, 2, 0, 3, 12, 5, 65536, 0, 13, 3, 6, 0, 0, 5, 1, 16, 0, 0, 3, 1, 16, 0, 0, 3, 1, 16, 0, 1, 1, 5, 6, 0, 1, 2, 3, 27, 0, 0, 5, 4, 5, 65536, 0, 5, 1, 16, 0, 2, 2, 2, 6, 0, 0, 3, 3, 8, 262402, 0, 4, 4, 46, 2, 0, 6, 2, 11, 0, 0, 3, 4, 49, 0, 1, 4, 4, 46, 0, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 4, 46, 0, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 3, 4, 65536, 0, 4, 4, 46, 0, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 3, 1, 4, 6, 0, 0, 5, 1, 16, 2, 0, 3, 4, 5, 8200, 0, 5, 3, 15, 8200, 0, 4, 2, 27, 0, 0, 6, 1, 16, 2, 0, 3, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 12, 5, 65536, 0, 13, 3, 6, 0, 0, 5, 1, 16, 0, 0, 3, 1, 16, 0, 1, 2, 2, 6, 0, 0, 3, 3, 8, 262402, 0, 4, 4, 46, 2, 0, 6, 2, 11, 0, 0, 3, 4, 49, 0, 1, 4, 4, 46, 0, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 4, 46, 0, 0, 4, 1, 11, 0, 0, 1, 1, 13, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 0, 8, 1, 10, 0, 4, 1, 4, 6, 0, 0, 5, 11, 3, 2, 1, 2, 5, 2, 2, 1, 2, 6, 2, 2, 1, 2, 6, 2, 2, 0, 7, 3, 27, 0, 1, 2, 5, 2, 2, 2, 1, 4, 6, 0, 0, 5, 7, 49, 2, 0, 8, 1, 11, 0, 0, 3, 7, 15, 8200, 0, 9, 11, 3, 0, 0, 13, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 1, 2, 6, 0, 0, 3, 6, 4, 2, 0, 9, 2, 11, 0, 0, 4, 7, 41, 0, 0, 8, 6, 15, 8192, 0, 7, 7, 49, 0, 1, 2, 6, 6, 0, 0, 7, 6, 17, 6, 0, 8, 8, 15, 8200, 0, 9, 6, 15, 8192, 0, 7, 7, 49, 0, 0, 10, 1, 11, 0, 0, 2, 8, 15, 8200, 0, 8, 2, 11, 0, 0, 2, 3, 8, 8204, 1, 2, 6, 17, 4, 0, 6, 1, 11, 0, 0, 1, 11, 8, 139272, 0, 12, 4, 6, 0, 1, 3, 3, 6, 0, 0, 5, 2, 17, 2, 0, 4, 2, 17, 2, 0, 6, 6, 15, 8192, 0, 7, 7, 49, 0, 0, 10, 8, 15, 8192, 0, 9, 7, 49, 0, 0, 10, 1, 11, 0, 0, 2, 4, 9, 9216, 0, 4, 2, 11, 0, 0, 2, 9, 4, 8192, 1, 3, 3, 6, 0, 0, 4, 6, 17, 2, 0, 7, 1, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 5, 4, 8192, 0, 6, 5, 6, 16, 0, 6, 4, 6, 0, 1, 4, 5, 6, 512, 0, 6, 3, 6, 0, 0, 4, 2, 2, 8200, 0, 3, 3, 17, 2, 0, 5, 1, 11, 0, 0, 2, 2, 17, 0, 0, 2, 1, 11, 0, 0, 1, 10, 8, 139264, 0, 12, 1, 11, 0, 0, 1, 5, 6, 528, 1, 5, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 5, 4, 8192, 0, 6, 5, 6, 16, 0, 6, 4, 6, 0, 1, 6, 3, 6, 0, 0, 4, 11, 3, 0, 0, 11, 2, 11, 0, 1, 6, 3, 6, 0, 0, 5, 4, 17, 2, 0, 6, 9, 17, 2, 0, 11, 4, 17, 2, 0, 6, 1, 11, 0, 0, 2, 3, 17, 0, 1, 6, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 5, 6, 512, 0, 6, 9, 17, 0, 1, 7, 5, 2, 0, 0, 8, 6, 2, 0, 0, 10, 2, 11, 0, 0, 3, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 4, 15, 8192, 0, 4, 2, 11, 0, 0, 2, 6, 8, 8212, 0, 7, 1, 11, 0, 0, 1, 4, 17, 0, 0, 5, 1, 11, 0, 0, 1, 5, 6, 528, 1, 7, 6, 2, 0, 0, 7, 2, 11, 0, 0, 3, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 11, 15, 8192, 0, 11, 2, 11, 0, 0, 2, 3, 8, 8196, 0, 5, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 4, 23, 0, 0, 5, 1, 11, 0, 0, 1, 6, 8, 172032, 0, 7, 4, 23, 0, 0, 5, 1, 11, 0, 0, 1, 4, 8, 139264, 0, 5, 1, 11, 0, 0, 1, 4, 17, 0, 0, 5, 1, 11, 0, 0, 1, 5, 6, 528, 1, 7, 5, 2, 0, 0, 6, 2, 11, 0, 0, 3, 6, 6, 512, 0, 7, 5, 23, 0, 3, 6, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 2, 2, 8200, 0, 3, 3, 6, 0, 0, 4, 4, 17, 32770, 0, 6, 1, 11, 0, 0, 2, 4, 17, 0, 1, 7, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 2, 6, 512, 0, 3, 3, 6, 0, 0, 4, 6, 2, 0, 0, 7, 1, 17, 2, 0, 3, 1, 11, 0, 0, 2, 9, 17, 0, 1, 8, 10, 7, 0, 0, 10, 1, 7, 0, 0, 2, 4, 9, 25600, 0, 4, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 6, 9, 24576, 0, 6, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 10, 4, 24576, 0, 11, 1, 11, 16384, 0, 1, 4, 17, 16384, 0, 5, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 4, 1, 17, 16384, 1, 9, 4, 6, 512, 1, 8, 4, 17, 0, 3, 7, 3, 6, 0, 0, 6, 1, 11, 0, 0, 2, 4, 17, 32768, 0, 4, 1, 11, 0, 0, 1, 9, 8, 434176, 0, 10, 1, 11, 0, 0, 1, 4, 17, 0, 0, 5, 1, 11, 0, 0, 1, 5, 6, 528, 1, 7, 6, 7, 0, 0, 6, 1, 7, 0, 0, 2, 4, 17, 49152, 0, 4, 1, 11, 16384, 0, 1, 8, 8, 155664, 0, 10, 1, 11, 16384, 0, 1, 5, 6, 16912, 1, 8, 4, 6, 512, 1, 7, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 7, 4, 16384, 0, 8, 4, 17, 16640, 0, 6, 1, 11, 16384, 0, 1, 4, 17, 16384, 2, 6, 4, 23, 0, 2, 5, 2, 6, 512, 0, 3, 1, 11, 0, 0, 1, 4, 17, 0, 0, 4, 1, 11, 0, 0, 1, 5, 6, 528, 1, 6, 5, 6, 512, 5, 3, 7, 9, 65536, 0, 7, 2, 11, 0, 0, 2, 6, 15, 65536, 0, 6, 2, 11, 0, 0, 2, 13, 8, 65540, 0, 14, 4, 6, 0, 1, 4, 6, 4, 0, 0, 8, 1, 11, 0, 0, 1, 4, 8, 139264, 0, 6, 3, 4, 65536, 0, 7, 11, 3, 0, 0, 11, 2, 11, 0, 0, 2, 5, 2, 0, 0, 7, 3, 7, 8200, 0, 3, 1, 7, 0, 0, 5, 1, 11, 0, 0, 1, 6, 8, 8456, 0, 7, 26, 14, 0, 1, 4, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 8, 4, 8192, 0, 9, 6, 17, 256, 3, 3, 2, 17, 0, 5, 0, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 4, 9, 65538, 1, 1, 3, 6, 0, 0, 4, 5, 6, 65536, 0, 5, 2, 11, 0, 1, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 4, 65538, 0, 5, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 8200, 0, 7, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 3, 6, 0, 0, 4, 1, 17, 131074, 0, 4, 4, 15, 8200, 0, 5, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 1, 2, 7, 4, 0, 0, 8, 3, 9, 9224, 0, 3, 2, 11, 0, 0, 2, 2, 9, 8200, 0, 2, 2, 11, 0, 0, 2, 4, 4, 8200, 0, 5, 1, 17, 131072, 0, 4, 1, 17, 131072, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 4, 65538, 0, 5, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 8200, 0, 7, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 6, 15, 8200, 1, 2, 3, 6, 0, 0, 4, 1, 17, 131074, 0, 4, 4, 15, 8200, 0, 5, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 1, 2, 7, 4, 0, 0, 8, 3, 9, 9224, 0, 3, 2, 11, 0, 0, 2, 2, 9, 8200, 0, 2, 2, 11, 0, 0, 2, 14, 4, 8200, 0, 15, 1, 17, 131072, 0, 4, 1, 17, 131072, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 4, 65538, 0, 8, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 5, 5, 8200, 0, 6, 4, 15, 8200, 0, 7, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 3, 6, 0, 0, 4, 6, 17, 66, 0, 7, 1, 11, 0, 0, 3, 1, 12, 131074, 0, 3, 2, 11, 0, 0, 3, 3, 49, 65536, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 3, 4, 65536, 0, 4, 3, 9, 9224, 0, 3, 2, 11, 0, 0, 2, 2, 9, 8200, 0, 2, 2, 11, 0, 0, 2, 4, 15, 8200, 0, 4, 2, 11, 0, 0, 2, 4, 8, 8204, 0, 5, 1, 12, 131072, 0, 3, 1, 11, 512, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 3, 4, 65536, 0, 4, 4, 9, 9216, 0, 4, 2, 11, 0, 0, 2, 6, 9, 8192, 0, 6, 2, 11, 0, 0, 2, 10, 4, 8192, 0, 11, 1, 17, 256, 0, 3, 1, 11, 512, 1, 3, 2, 2, 8200, 0, 3, 1, 17, 256, 2, 2, 3, 6, 0, 0, 4, 1, 17, 131074, 0, 2, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 1, 2, 7, 4, 0, 0, 8, 6, 17, 64, 0, 7, 1, 17, 131072, 0, 4, 1, 17, 131072, 4, 0, 2, 0, 0, 1, 0, 39, 0, 0, 1, 0, 5, 0, 0, 1, 0, 47, 0, 0, 1, 0, 19, 0, 0, 1, 0, 1, 0, 0, 1, 0, 34, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 45, 0, 0, 1, 0, 5, 0, 0, 1, 0, 47, 0, 0, 1, 0, 19, 0, 0, 1, 0, 1, 0, 0, 1, 0, 34, 0, 0, 1, 0, 3, 0, 0, 1, 0, 2, 0, 0, 1, 0, 22, 0, 0, 1, 0, 28, 0, 0, 1, 0, 8, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 19, 0, 0, 1, 0, 15, 0, 0, 1, 0, 16, 0, 0, 1, 0, 24, 0, 0, 1, 0, 1, 0, 0, 1, 0, 17, 0, 0, 1, 0, 44, 0, 0, 1, 0, 8, 0, 0, 1, 0, 18, 0, 0, 1, 0, 18, 0, 0, 1, 0, 34, 0, 0, 1, 0, 3, 0, 0, 1, 0, 2, 0, 0, 1, 0, 36, 0, 0, 1, 0, 42, 0, 0, 1, 0, 35, 0, 0, 1, 0, 16, 0, 0, 1, 0, 3, 0, 0, 1, 0, 20, 0, 0, 1, 0, 25, 0, 0, 1, 0, 6, 0, 0, 1, 0, 2, 0, 0, 1, 0, 12, 0, 0, 1, 0, 3, 0, 0, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 3, 26, 8224, 0, 4, 3, 39, 32, 0, 4, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 12, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 5, 9, 65538, 1, 1, 3, 6, 0, 0, 4, 5, 6, 65536, 0, 5, 2, 11, 0, 2, 1, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 11, 15, 2, 1, 2, 4, 13, 2, 0, 6, 3, 15, 8200, 0, 4, 3, 27, 0, 2, 1, 4, 6, 0, 0, 5, 4, 4, 65536, 1, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 4, 2, 0, 9, 4, 52, 2, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 3, 5, 23, 0, 2, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 4, 2, 0, 5, 3, 6, 0, 0, 4, 4, 52, 2, 0, 6, 2, 11, 0, 0, 4, 3, 27, 0, 1, 3, 1, 11, 0, 0, 1, 4, 46, 65536, 0, 4, 1, 11, 0, 0, 1, 4, 52, 0, 3, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 4, 2, 0, 5, 1, 17, 2, 0, 3, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 4, 4, 65536, 1, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 1, 52, 0, 0, 1, 1, 11, 0, 0, 1, 4, 52, 0, 1, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 4, 4, 65536, 0, 5, 1, 11, 0, 0, 1, 4, 9, 8200, 0, 5, 1, 11, 512, 0, 1, 1, 11, 0, 0, 1, 14, 52, 0, 1, 2, 2, 2, 8200, 0, 3, 4, 4, 65536, 0, 7, 4, 52, 0, 3, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 3, 26, 8224, 0, 4, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 10, 14, 32, 0, 11, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 5, 9, 65538, 1, 1, 3, 6, 0, 0, 4, 5, 6, 65536, 0, 5, 2, 11, 0, 0, 3, 4, 9, 65536, 0, 4, 2, 11, 0, 1, 1, 3, 6, 0, 0, 4, 6, 9, 9216, 0, 6, 2, 11, 0, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 5, 4, 65538, 0, 6, 1, 16, 2, 0, 3, 1, 16, 2, 0, 3, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 11, 5, 5, 8200, 0, 8, 7, 41, 0, 0, 9, 6, 12, 66, 0, 8, 4, 6, 0, 0, 5, 2, 5, 8200, 0, 3, 1, 16, 0, 0, 3, 2, 11, 0, 0, 3, 8, 3, 65536, 0, 9, 1, 16, 0, 0, 5, 7, 41, 0, 0, 9, 1, 12, 2, 0, 3, 1, 16, 0, 0, 3, 2, 11, 0, 0, 3, 11, 15, 65536, 0, 12, 1, 16, 0, 1, 2, 3, 6, 0, 0, 4, 6, 17, 66, 0, 7, 1, 11, 0, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 5, 8, 401416, 1, 3, 3, 4, 65536, 0, 4, 4, 6, 0, 1, 4, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 17, 0, 0, 1, 1, 11, 0, 0, 1, 5, 8, 401416, 1, 4, 6, 12, 64, 0, 7, 1, 17, 256, 3, 2, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 6, 17, 64, 2, 2, 3, 6, 0, 0, 4, 7, 17, 2, 0, 8, 1, 11, 0, 0, 2, 3, 15, 8200, 0, 3, 2, 11, 0, 0, 2, 3, 8, 8204, 0, 4, 5, 15, 8200, 0, 5, 2, 11, 0, 0, 2, 3, 8, 8204, 0, 4, 5, 23, 0, 1, 2, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 7, 17, 0, 0, 7, 1, 11, 0, 0, 1, 5, 8, 401416, 2, 2, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 1, 2, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 7, 17, 32770, 0, 8, 1, 11, 0, 1, 3, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 17, 0, 0, 1, 1, 11, 0, 0, 1, 5, 52, 0, 1, 3, 3, 4, 65536, 0, 4, 19, 4, 8192, 0, 20, 4, 6, 0, 0, 6, 1, 12, 2, 0, 3, 5, 6, 512, 0, 6, 1, 12, 0, 1, 4, 2, 2, 8200, 0, 6, 2, 11, 0, 0, 3, 1, 11, 0, 0, 1, 1, 17, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8456, 0, 9, 1, 11, 0, 0, 2, 4, 23, 0, 0, 6, 28, 0, 0, 1, 4, 3, 2, 8200, 0, 4, 1, 17, 2, 0, 3, 2, 11, 0, 0, 3, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 6, 14, 16384, 0, 6, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 2, 14, 16384, 0, 2, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 3, 2, 1, 11, 0, 0, 1, 7, 8, 8456, 0, 9, 1, 12, 2, 0, 3, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 7, 14, 16384, 0, 7, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 2, 14, 16384, 0, 2, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 1, 2, 1, 11, 0, 0, 1, 2, 8, 8456, 2, 2, 7, 17, 32768, 1, 3, 1, 11, 0, 0, 1, 6, 8, 172040, 1, 3, 1, 11, 0, 0, 1, 3, 8, 8456, 0, 5, 1, 12, 163842, 0, 3, 1, 12, 163840, 0, 1, 1, 11, 0, 0, 1, 5, 8, 434176, 0, 6, 1, 11, 0, 0, 1, 1, 17, 0, 0, 3, 13, 3, 8192, 0, 13, 2, 11, 0, 0, 2, 12, 2, 8192, 0, 13, 1, 11, 0, 0, 1, 14, 8, 8456, 0, 19, 4, 7, 0, 0, 4, 1, 7, 0, 0, 2, 14, 14, 16384, 0, 14, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 2, 2, 11, 15, 65536, 0, 14, 4, 13, 0, 0, 6, 6, 13, 0, 0, 8, 7, 13, 0, 0, 9, 7, 13, 0, 3, 1, 3, 6, 0, 0, 4, 6, 6, 0, 0, 7, 11, 15, 65538, 0, 12, 1, 16, 2, 1, 2, 4, 13, 2, 0, 6, 8, 3, 65536, 0, 9, 1, 16, 0, 1, 2, 6, 13, 2, 0, 8, 3, 15, 8200, 0, 4, 3, 6, 0, 0, 4, 2, 5, 8200, 0, 5, 2, 11, 0, 0, 3, 8, 3, 65536, 0, 9, 1, 16, 0, 1, 2, 7, 13, 2, 0, 9, 3, 15, 8200, 0, 4, 5, 15, 8200, 0, 6, 4, 27, 0, 1, 2, 7, 13, 2, 0, 9, 6, 3, 8200, 0, 7, 18, 49, 8192, 3, 1, 4, 6, 0, 0, 5, 1, 16, 2, 0, 3, 7, 5, 8200, 0, 10, 2, 5, 8200, 0, 4, 11, 15, 65536, 0, 12, 1, 16, 0, 1, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 229378, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 6, 2, 11, 0, 0, 3, 4, 27, 0, 1, 3, 3, 6, 0, 0, 4, 4, 47, 0, 0, 7, 4, 13, 0, 0, 6, 6, 13, 0, 0, 8, 7, 13, 0, 0, 9, 2, 11, 0, 0, 5, 1, 11, 0, 0, 2, 4, 46, 163840, 1, 3, 2, 6, 512, 0, 3, 1, 11, 0, 0, 1, 1, 11, 0, 0, 1, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8456, 1, 4, 6, 6, 512, 0, 7, 5, 23, 0, 3, 3, 1, 11, 0, 0, 1, 7, 17, 163840, 0, 7, 1, 11, 0, 0, 1, 4, 8, 139272, 0, 6, 1, 11, 0, 0, 1, 6, 8, 8456, 0, 9, 1, 11, 0, 0, 2, 5, 23, 0, 2, 3, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 3, 17, 32770, 0, 4, 1, 11, 0, 0, 2, 6, 17, 163904, 1, 3, 2, 6, 512, 0, 3, 3, 17, 32768, 0, 3, 1, 11, 0, 0, 1, 3, 8, 229376, 0, 6, 2, 11, 0, 0, 3, 4, 17, 163840, 0, 4, 1, 11, 0, 0, 1, 3, 8, 229376, 1, 4, 1, 11, 0, 0, 1, 4, 17, 163840, 0, 5, 1, 11, 0, 0, 2, 3, 17, 32768, 1, 4, 6, 6, 512, 0, 7, 4, 23, 0, 2, 3, 5, 23, 0, 2, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 229378, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 3, 6, 0, 0, 4, 1, 16, 0, 1, 3, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 4, 13, 0, 0, 4, 1, 11, 0, 0, 1, 7, 8, 229376, 2, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 229378, 0, 5, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 6, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 1, 16, 0, 1, 3, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 4, 13, 0, 0, 4, 1, 11, 0, 0, 1, 3, 8, 229376, 2, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 65794, 0, 5, 4, 46, 2, 0, 6, 2, 11, 0, 0, 3, 1, 16, 0, 1, 3, 4, 46, 0, 0, 4, 1, 11, 0, 0, 1, 4, 13, 0, 0, 4, 1, 11, 0, 0, 1, 4, 8, 65792, 5, 0, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 4, 9, 65538, 1, 1, 3, 6, 0, 0, 4, 5, 6, 65536, 0, 5, 2, 11, 0, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 4, 65538, 0, 5, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 2, 11, 0, 0, 3, 8, 3, 65536, 0, 9, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 1, 2, 8, 3, 65536, 0, 8, 2, 11, 0, 0, 2, 7, 2, 65536, 0, 8, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 5, 4, 8192, 0, 6, 5, 6, 16, 0, 6, 4, 6, 0, 0, 7, 9, 4, 65552, 0, 10, 1, 11, 0, 0, 1, 1, 17, 0, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 4, 65538, 0, 5, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 2, 11, 0, 0, 3, 8, 3, 65536, 0, 9, 6, 15, 8200, 1, 2, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 1, 2, 8, 3, 65536, 0, 8, 2, 11, 0, 0, 2, 7, 2, 65536, 0, 8, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 5, 4, 8192, 0, 6, 5, 6, 16, 0, 6, 4, 6, 0, 0, 7, 9, 4, 65552, 0, 10, 1, 11, 0, 0, 1, 1, 17, 0, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 2, 1, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 4, 65538, 0, 8, 1, 12, 2, 0, 3, 4, 6, 0, 0, 5, 4, 5, 8200, 0, 5, 7, 15, 8200, 0, 10, 2, 11, 0, 0, 3, 8, 3, 65536, 0, 9, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 4, 8, 270600, 1, 2, 8, 3, 65536, 0, 8, 2, 11, 0, 0, 2, 7, 2, 65536, 0, 8, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 5, 4, 8192, 0, 6, 5, 6, 16, 0, 6, 4, 6, 0, 1, 3, 3, 6, 0, 0, 4, 4, 17, 2, 0, 5, 1, 11, 0, 0, 2, 3, 4, 65536, 0, 4, 9, 4, 65552, 0, 10, 1, 11, 0, 0, 1, 1, 17, 0, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 6, 1, 11, 512, 1, 3, 3, 4, 65536, 0, 4, 4, 9, 9216, 0, 4, 2, 11, 0, 0, 2, 6, 9, 8192, 0, 6, 2, 11, 0, 0, 2, 10, 4, 8192, 0, 11, 1, 11, 0, 0, 1, 4, 17, 0, 0, 5, 2, 11, 0, 4, 1, 3, 6, 0, 0, 4, 4, 6, 0, 0, 5, 8, 3, 65538, 0, 9, 1, 16, 2, 1, 2, 7, 2, 65538, 0, 8, 4, 15, 8192, 0, 5, 3, 49, 65536, 0, 4, 1, 16, 0, 1, 2, 4, 2, 65538, 0, 5, 1, 16, 0, 3, 1, 4, 6, 0, 0, 5, 1, 16, 2, 0, 3, 7, 5, 8200, 0, 9, 8, 3, 65536, 0, 9, 1, 16, 0, 1, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 7, 8, 229378, 0, 9, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 6, 2, 11, 0, 0, 3, 6, 3, 8200, 0, 8, 3, 6, 0, 0, 4, 1, 16, 0, 1, 3, 3, 6, 0, 0, 4, 8, 3, 65536, 0, 8, 2, 11, 0, 1, 3, 5, 6, 512, 0, 6, 4, 46, 163840, 1, 4, 4, 2, 65536, 0, 5, 3, 17, 163842, 0, 5, 2, 11, 0, 0, 3, 4, 2, 8200, 0, 5, 3, 17, 164096, 1, 4, 7, 2, 65536, 0, 8, 6, 17, 163842, 0, 8, 2, 11, 0, 1, 5, 3, 6, 0, 0, 4, 3, 17, 2, 0, 4, 1, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 8, 4, 8192, 0, 9, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 9, 4, 8192, 0, 10, 6, 17, 164096, 0, 8, 1, 11, 512, 1, 5, 1, 11, 0, 0, 1, 4, 46, 163840, 0, 5, 1, 11, 0, 0, 2, 4, 2, 65536, 0, 5, 10, 7, 0, 0, 10, 1, 7, 0, 0, 2, 3, 17, 16384, 1, 5, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 7, 8, 229376, 4, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 3, 8, 229378, 0, 5, 3, 6, 0, 0, 4, 4, 46, 163842, 0, 6, 2, 11, 0, 0, 4, 3, 6, 0, 0, 4, 1, 16, 0, 1, 3, 3, 6, 0, 0, 4, 8, 3, 65536, 0, 8, 2, 11, 0, 1, 3, 5, 6, 512, 0, 6, 4, 46, 163840, 1, 4, 4, 2, 65536, 0, 5, 3, 17, 163842, 0, 5, 2, 11, 0, 0, 3, 3, 17, 163840, 1, 4, 7, 2, 65536, 0, 8, 6, 17, 163842, 0, 8, 2, 11, 0, 1, 5, 3, 6, 0, 0, 4, 3, 17, 2, 0, 4, 1, 11, 0, 0, 2, 4, 9, 65536, 0, 4, 2, 11, 0, 0, 2, 8, 4, 8192, 0, 9, 6, 17, 164096, 1, 5, 1, 11, 0, 0, 1, 4, 46, 163840, 0, 5, 1, 11, 0, 0, 2, 4, 2, 65536, 0, 5, 10, 7, 0, 0, 10, 1, 7, 0, 0, 2, 3, 17, 16384, 1, 5, 4, 46, 163840, 0, 4, 1, 11, 0, 0, 1, 3, 8, 229376, 4, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 4, 8, 65794, 0, 5, 4, 46, 2, 0, 6, 2, 11, 0, 0, 3, 1, 16, 0, 1, 3, 3, 6, 0, 0, 4, 8, 3, 65536, 0, 8, 2, 11, 0, 1, 3, 5, 6, 512, 0, 6, 4, 46, 0, 1, 4, 4, 2, 65536, 0, 5, 3, 17, 2, 0, 5, 2, 11, 0, 0, 3, 3, 17, 0, 1, 4, 7, 2, 65536, 0, 8, 6, 17, 2, 0, 8, 2, 11, 0, 0, 3, 10, 7, 0, 0, 10, 1, 7, 0, 0, 2, 4, 9, 81920, 0, 4, 1, 11, 16384, 0, 1, 1, 11, 16384, 0, 1, 8, 4, 24576, 0, 9, 6, 17, 16640, 6, 0, 3, 6, 0, 0, 4, 5, 6, 16, 0, 6, 2, 6, 0, 0, 3, 9, 4, 65554, 0, 10, 1, 12, 131074, 0, 4, 4, 15, 8200, 0, 6, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 1, 5, 6, 16, 0, 6, 2, 6, 0, 0, 3, 4, 4, 18, 0, 5, 1, 12, 131074, 0, 4, 4, 15, 8200, 0, 6, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 2, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 1, 17, 32770, 0, 2, 1, 11, 0, 0, 2, 3, 4, 65536, 0, 4, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 4, 15, 8192, 0, 4, 2, 11, 0, 0, 2, 4, 8, 8212, 0, 5, 1, 12, 131072, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 6, 1, 11, 512, 1, 2, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 1, 17, 32770, 0, 2, 1, 11, 0, 0, 2, 3, 7, 8200, 0, 3, 1, 7, 0, 1, 2, 3, 4, 65536, 0, 4, 1, 17, 32768, 0, 1, 1, 11, 0, 0, 1, 11, 8, 434176, 0, 12, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 1, 17, 32768, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 6, 1, 11, 512, 1, 2, 2, 2, 8200, 0, 3, 1, 17, 33024, 2, 1, 3, 6, 0, 0, 4, 1, 17, 131074, 0, 2, 1, 11, 0, 0, 2, 1, 12, 131072, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 1, 1, 7, 4, 0, 0, 8, 4, 4, 16, 0, 5, 1, 17, 131072, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 7, 1, 17, 131072, 2, 0, 3, 6, 0, 0, 4, 5, 6, 16, 0, 6, 2, 6, 0, 0, 3, 9, 4, 65554, 0, 10, 1, 12, 131074, 0, 4, 4, 15, 8200, 0, 6, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 6, 15, 8200, 1, 1, 5, 6, 16, 0, 6, 2, 6, 0, 0, 3, 4, 4, 18, 0, 5, 1, 12, 131074, 0, 4, 4, 15, 8200, 0, 6, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 6, 15, 8200, 1, 2, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 1, 17, 32770, 0, 2, 1, 11, 0, 0, 2, 3, 4, 65536, 0, 4, 2, 9, 9216, 0, 2, 2, 11, 0, 0, 2, 4, 15, 8192, 0, 4, 2, 11, 0, 0, 2, 4, 8, 8212, 0, 5, 1, 12, 131072, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 6, 1, 11, 512, 1, 2, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 1, 17, 32770, 0, 2, 1, 11, 0, 0, 2, 6, 15, 8200, 0, 6, 2, 11, 0, 0, 2, 3, 8, 8204, 1, 2, 3, 4, 65536, 0, 4, 1, 17, 32768, 0, 1, 1, 11, 0, 0, 1, 14, 8, 434176, 0, 15, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 1, 17, 32768, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 6, 1, 11, 512, 1, 2, 2, 2, 8200, 0, 3, 1, 17, 33024, 2, 1, 3, 6, 0, 0, 4, 1, 17, 131074, 0, 2, 1, 11, 0, 0, 2, 1, 12, 131072, 0, 1, 1, 11, 0, 0, 1, 6, 8, 401416, 1, 1, 7, 4, 0, 0, 8, 4, 4, 16, 0, 5, 1, 17, 131072, 0, 2, 1, 11, 0, 0, 1, 5, 6, 528, 0, 7, 1, 17, 131072, 3, 0, 2, 6, 0, 0, 3, 7, 4, 2, 0, 8, 1, 16, 2, 0, 3, 1, 12, 2, 0, 3, 6, 3, 8200, 0, 7, 1, 16, 0, 0, 3, 4, 6, 0, 0, 5, 3, 9, 9224, 0, 3, 2, 11, 0, 0, 2, 3, 9, 8200, 0, 3, 2, 11, 0, 0, 2, 7, 5, 8200, 0, 10, 1, 12, 131074, 0, 4, 4, 15, 8200, 0, 6, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 1, 16, 0, 1, 1, 1, 12, 0, 0, 1, 1, 11, 0, 0, 1, 7, 8, 8456, 0, 9, 1, 12, 2, 0, 3, 6, 7, 8200, 0, 6, 1, 7, 0, 0, 2, 21, 14, 16384, 0, 21, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 1, 38, 0, 0, 1, 3, 14, 16384, 0, 3, 1, 38, 0, 0, 1, 1, 17, 0, 0, 1, 1, 38, 0, 0, 1, 1, 14, 16384, 3, 0, 5, 6, 0, 0, 6, 12, 17, 134, 0, 14, 3, 49, 65536, 0, 4, 1, 11, 0, 0, 2, 25, 14, 0, 2, 0, 1, 21, 32, 0, 1, 1, 21, 32, 0, 1, 3, 26, 8224, 0, 4, 3, 39, 32, 0, 4, 7, 39, 32, 0, 8, 1, 11, 32, 0, 2, 6, 14, 32, 0, 8, 1, 21, 32, 1, 0, 3, 6, 0, 0, 4, 4, 9, 2, 1, 1, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 6, 9, 2, 1, 2, 3, 6, 0, 0, 4, 5, 6, 0, 0, 5, 2, 11, 0, 0, 2, 5, 6, 0, 0, 5, 2, 11, 0, 1, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 10, 4, 2, 0, 11, 1, 17, 2, 0, 5, 2, 27, 0, 0, 8, 3, 27, 0, 0, 5, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 3, 2, 2, 8200, 0, 3, 1, 52, 0, 0, 1, 1, 11, 0, 0, 1, 6, 52, 0, 2, 2, 3, 6, 0, 0, 4, 2, 6, 0, 0, 3, 10, 4, 2, 0, 11, 1, 16, 2, 0, 3, 3, 9, 9224, 0, 3, 2, 11, 0, 0, 2, 2, 9, 8200, 0, 2, 2, 11, 0, 0, 2, 4, 5, 8200, 0, 6, 3, 6, 0, 0, 4, 1, 17, 2, 0, 3, 1, 52, 0, 0, 3, 2, 11, 0, 0, 3, 3, 49, 65536, 0, 4, 3, 15, 8200, 0, 4, 2, 27, 0, 1, 3, 3, 6, 0, 0, 4, 3, 6, 0, 0, 4, 1, 17, 2, 0, 2, 1, 11, 0, 0, 2, 3, 7, 8200, 0, 3, 1, 7, 0, 1, 3, 3, 49, 65536, 0, 4, 1, 52, 0, 0, 1, 1, 11, 0, 0, 1, 11, 52, 0, 0, 12, 1, 11, 0, 0, 1, 3, 6, 0, 0, 4, 1, 52, 0, 0, 3, 1, 11, 512, 1, 3, 2, 2, 8200, 0, 3, 1, 52, 0 ], "resultId": "11" } } 08:20:02.782 Server { "id": "{02ac2fcd-d469-450c-9fde-4f238279aa0d}", "jsonrpc": "2.0", "result": [ { "range": { "end": { "character": 12, "line": 251 }, "start": { "character": 8, "line": 251 } } } ] } 08:20:03.457 Client { "id": "{b7a3fb7c-f787-4428-a7f9-2b66fc79d494}", "jsonrpc": "2.0", "method": "textDocument/hover", "params": { "position": { "character": 26, "line": 251 }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:03.469 Server { "id": "{b7a3fb7c-f787-4428-a7f9-2b66fc79d494}", "jsonrpc": "2.0", "result": { "contents": { "kind": "markdown", "value": "\n```rust\nstd::path\n```\n\n```rust\npub struct PathBuf // size = 24 (0x18), align = 0x8\n```\n\n---\n\nAn owned, mutable path (akin to [`String`](https://doc.rust-lang.org/stable/alloc/string/struct.String.html)).\n\nThis type provides methods like [`push`] and [`set_extension`] that mutate\nthe path in place. It also implements [`Deref`](https://doc.rust-lang.org/stable/core/ops/deref/trait.Deref.html) to [`Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html), meaning that\nall methods on [`Path`](https://doc.rust-lang.org/stable/std/path/struct.Path.html) slices are available on `PathBuf` values as well.\n\nMore details about the overall approach can be found in\nthe [documentation](https://doc.rust-lang.org/stable/std/path/index.html).\n\n# Examples\n\nYou can use [`push`] to build up a `PathBuf` from\ncomponents:\n\n```rust\nuse std::path::PathBuf;\n\nlet mut path = PathBuf::new();\n\npath.push(r\"C:\\\");\npath.push(\"windows\");\npath.push(\"system32\");\n\npath.set_extension(\"dll\");\n```\n\nHowever, [`push`] is best used for dynamic situations. This is a better way\nto do this when you know all of the components ahead of time:\n\n```rust\nuse std::path::PathBuf;\n\nlet path: PathBuf = [r\"C:\\\", \"windows\", \"system32.dll\"].iter().collect();\n```\n\nWe can still do better than this! Since these are all strings, we can use\n`From::from`:\n\n```rust\nuse std::path::PathBuf;\n\nlet path = PathBuf::from(r\"C:\\windows\\system32.dll\");\n```\n\nWhich method works best depends on what kind of situation you're in." }, "range": { "end": { "character": 33, "line": 251 }, "start": { "character": 26, "line": 251 } } } } 08:20:04.344 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ ], "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs", "version": 0 } } 08:20:04.345 Client { "id": "{625b2a9c-9f86-401b-9eac-7e0125a6b7db}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ ] }, "range": { "end": { "character": 0, "line": 19 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs" } } } 08:20:04.345 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ ], "uri": "file:///_/code/rust/frontier/main.rs", "version": 0 } } 08:20:04.345 Client { "id": "{5a4ab5b7-a95e-4d7a-8e15-3f92daae0bc1}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ ] }, "range": { "end": { "character": 0, "line": 277 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/frontier/main.rs" } } } 08:20:04.345 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ { "code": "inactive-code", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#inactive-code" }, "message": "code is inactive due to #[cfg] directives: feature = \"fsnotify\" is enabled", "range": { "end": { "character": 1, "line": 176 }, "start": { "character": 0, "line": 156 } }, "severity": 4, "source": "rust-analyzer", "tags": [ 1 ] }, { "code": "inactive-code", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#inactive-code" }, "message": "code is inactive due to #[cfg] directives: feature = \"zstd\" is enabled", "range": { "end": { "character": 1, "line": 345 }, "start": { "character": 0, "line": 332 } }, "severity": 4, "source": "rust-analyzer", "tags": [ 1 ] } ], "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs", "version": 0 } } 08:20:04.345 Client { "id": "{26188f5c-dccd-4f0a-8bd2-c00e6ef4710d}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ { "code": "inactive-code", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#inactive-code" }, "message": "code is inactive due to #[cfg] directives: feature = \"fsnotify\" is enabled", "range": { "end": { "character": 1, "line": 176 }, "start": { "character": 0, "line": 156 } }, "severity": 4, "source": "rust-analyzer", "tags": [ 1 ] }, { "code": "inactive-code", "codeDescription": { "href": "https://rust-analyzer.github.io/manual.html#inactive-code" }, "message": "code is inactive due to #[cfg] directives: feature = \"zstd\" is enabled", "range": { "end": { "character": 1, "line": 345 }, "start": { "character": 0, "line": 332 } }, "severity": 4, "source": "rust-analyzer", "tags": [ 1 ] } ] }, "range": { "end": { "character": 0, "line": 346 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } } } 08:20:04.346 Server { "jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": { "diagnostics": [ ], "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs", "version": 0 } } 08:20:04.346 Client { "id": "{d1b90206-65bf-4e13-84c8-e454b87763eb}", "jsonrpc": "2.0", "method": "textDocument/codeAction", "params": { "context": { "diagnostics": [ ] }, "range": { "end": { "character": 0, "line": 216 }, "start": { "character": 0, "line": 0 } }, "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } } } 08:20:04.355 Server { "id": "{625b2a9c-9f86-401b-9eac-7e0125a6b7db}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "#[allow(non_upper_case_globals)]\npub const mesh__2d_screen_vs:$crate::uses::GL::macro_uses::InlineShader = $crate::uses::GL::macro_uses::InlineShader(stringify!(mesh__2d_screen_vs),const_format::concatcp!($crate::uses::GL::unigl::GLSL_VERSION,r\"layout(location = 0) in vec4 Position;\n\tout vec2 glTexCoord;\n\n\tvoid main() {\n\t\tgl_Position = vec4(Position.xy, 0, 1);\n\t\tglTexCoord = Position.zw;\n\t}\",));", "range": { "end": { "character": 2, "line": 9 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs", "version": 0 } } ] }, "kind": "refactor.inline", "title": "Inline macro" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n SHADER!(\n\t mesh__2d_screen_vs,\n\t r\"layout(location = 0) in vec4 Position;\n\tout vec2 glTexCoord;\n\n\tvoid main() {\n\t\tgl_Position = vec4(Position.xy, 0, 1);\n\t\tglTexCoord = Position.zw;\n\t}\"\n );\n\n SHADER!(\n\t mesh__2d_screen_ps,\n\t r\"in vec2 glTexCoord;\n\tlayout(location = 0) out vec4 glFragColor;\n\tuniform sampler2D tex;\n\n\tvoid main() { glFragColor = texture(tex, glTexCoord); }\"\n );\n}", "range": { "end": { "character": 2, "line": 18 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs", "version": 0 } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "kind": "rename", "newUri": "file:///_/code/rust/toolbox/glsl/inline_shaders/mod.rs", "oldUri": "file:///_/code/rust/toolbox/glsl/inline_shaders.rs" } ] }, "kind": "refactor", "title": "Convert inline_shaders.rs to inline_shaders/mod.rs" } ] } 08:20:04.656 Server { "id": "{5a4ab5b7-a95e-4d7a-8e15-3f92daae0bc1}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n use grafix_toolbox::{gui::*, *};\n\n use uses::{asyn::*, math::*, *};\n\n use GL::{atlas::*, font::*, mesh::*, pbrt::*, window::*, *};\n\n pub(crate) fn main() {\n\t LOGGER!(logging::Term, INFO);\n\n\t ShaderManager::LoadSources(\"shd_pbrt.glsl\");\n\n\t let mut window = TIMER!(window, {\n\t\t let win = EXPECT!(Window::get((50, 50, 1600, 900), \"Engine\"));\n\t\t GLEnable!(DEPTH_TEST, BLEND, MULTISAMPLE, TEXTURE_CUBE_MAP_SEAMLESS, DEPTH_WRITEMASK);\n\t\t GLDisable!(CULL_FACE);\n\t\t GL::BlendFunc::Set((gl::SRC_ALPHA, gl::ONE_MINUS_SRC_ALPHA));\n\t\t GL::DepthFunc::Set(gl::LESS);\n\t\t win\n\t });\n\n\t let font = {\n\t\t let alphabet = (9..=9).chain(32_u8..127).map(|n| n as char).collect::() + \"ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ\";\n\t\t Font::new_cached(\"UbuntuMono-R\", alphabet)\n\t };\n\n\t let large_text = \"Functional textbox is capable of showing millions of lines with negligeble cpu usage!(so long as we're not editing, but that can be solved functionally as well)\\nBiggest issue is collecting the text to display, really - you can set large text range to 1000000 in release.\\n\\nUpper bar allows to drag layout around, pip on the bottom right resizes it.\\n\\n\\n\".repeat(100);\n\n\t let popups_text = \"With my approach, you can implement context popups in your ui, in under 250 lines of code. I mean, something like this takes a very complex toolkit and A LOT of code, traditionally. This is the power of functional architecture. The implementation also has ample space for memoizations, in case *fast* isn't fast enough.\\n\\n\\n\".repeat(2);\n\n\t let db = [\n\t\t (\n\t\t\t \"context popups\",\n\t\t\t \"Pioneered in crusader kings 3, afaik, this is a really cool ui element.\\n\\nBTW these context popups are recursive!\",\n\t\t ),\n\t\t (\"ui\", \"This very thing\"),\n\t\t (\n\t\t\t \"my approach\",\n\t\t\t \"Look into toolbox/gui/elements.\\nYes there're some safety overrides there,\\nbut this is my project and i can do whatever i want in it!\",\n\t\t ),\n\t\t (\n\t\t\t \"functional architecture\",\n\t\t\t \"I've noticed that people often make a fantasy OOP architecture, maybe even write a UML diag, and then forget about it. Functional architecture means writing out the actual pipeline of the data transformations your client wants, and then implementing it recursively with simplest possible functions. When you have MVP, you can optimise your functions with memoization, and then maybe even with SIMD or a gpu. Optimisation on a directed graph is very simple!\",\n\t\t ),\n\t ];\n\t let db = &HyperDB::new(&font, 0.05, db);\n\n\t let mut renderer = Renderer::new(Theme {\n\t\t easing: 10.,\n\t\t bg: (0.2, 0.2, 0.2, 0.7),\n\t\t bg_focus: hex_to_rgba(0x596475A0),\n\t\t fg: hex_to_rgba(0x626975FF),\n\t\t fg_focus: hex_to_rgba(0x461E5CCF),\n\t\t highlight: (0.9, 0.4, 0.1, 1.),\n\t\t text: (1., 0.9, 0.9, 0.9),\n\t\t text_focus: (1., 1., 1., 1.),\n\t\t text_highlight: (0.2, 0.2, 0.2, 1.),\n\t\t font,\n\t\t font_size: 0.8,\n\t });\n\n\t let atlas = TexAtlas::::new();\n\t let _cat = atlas.load(\"ortodox_grafix.webp\");\n\t let mut spinner = EXPECT!(Animation::from_file(\"spinner\", &atlas));\n\n\t let mut fcatto = FS::Watch::Watch(FS::Lazy::Text, \"res/cat.txt\");\n\n\t let (skybox, brdf_lut) = (EnvTex::from(EXPECT!(Environment::new_cached(\"lythwood_lounge_4k\"))), Environment::lut_cached());\n\n\t let (mut skybox_shd, mut render_shd) = (\n\t\t EXPECT!(Shader::new((\"vs_skybox\", \"ps_skybox\"))),\n\t\t EXPECT!(Shader::new((\"vs_material_based_render\", \"ps_material_based_render\"))),\n\t );\n\n\t let (sampl, mipmapped) = (\n\t\t &Sampler::linear(),\n\t\t &Sampler!(\n\t\t\t (TEXTURE_WRAP_R, CLAMP_TO_EDGE),\n\t\t\t (TEXTURE_WRAP_S, CLAMP_TO_EDGE),\n\t\t\t (TEXTURE_WRAP_T, CLAMP_TO_EDGE),\n\t\t\t (TEXTURE_MIN_FILTER, LINEAR_MIPMAP_LINEAR)\n\t\t ),\n\t );\n\n\t Layout::storage(ID!(\"menu\")).pos = (-10., -10.);\n\t Layout::storage(ID!(\"menu\")).size = (1.5, 2.);\n\t HyperText::storage(ID!(\"hypertext\")).text = popups_text.into();\n\t TextEdit::storage(ID!(\"text\")).text = large_text.into();\n\t Slider::storage(ID!(\"metallicity\")).pip_pos = 0.885;\n\t Slider::storage(ID!(\"roughness\")).pip_pos = 0.286;\n\t Slider::storage(ID!(\"rotation\")).pip_pos = 0.1;\n\n\t let show_tooltip = |hovered, p: Vec2, msg: &str, r: &mut RenderLock| {\n\t\t if timeout(hovered) {\n\t\t\t let size = (0.03, 0.1).mul((msg.len(), 1));\n\t\t\t let _c = r.clip(p, size);\n\t\t\t r.Label(ID!(\"Tooltip\"), p.sum(size.mul(0.05)), size, msg);\n\t\t }\n\t };\n\n\t let mut exit = false;\n\t let mut mouse_pos = (0., 0.);\n\t let mut options = [\"stanford_dragon\", \"dr\", \"tyra\", \"not a model\"].map(String::from);\n\t let mut demo_mesh = DeferredMesh::default();\n\t let mut loading_in_progress;\n\t let mut magnification = 0.3;\n\t let mut rotation = 0_f32;\n\n\t for i in (0..100).chain((0..100).step_by(1).rev()).map(|i| f32(i) / 100.).cycle() {\n\t\t let mut r = renderer.lock();\n\n\t\t let mut cam1 = Camera::zero((&window, (70, 10)));\n\t\t {\n\t\t\t window.bind();\n\t\t\t window.clear((0, 1));\n\n\t\t\t let metallicity = 0.995 * r.Slider(ID!(\"metallicity\"), (0.3, -0.88), (1., 0.05), 0.05);\n\t\t\t let roughness = (0.05 + r.Slider(ID!(\"roughness\"), (0.3, -0.94), (1., 0.05), 0.05)) / 1.05;\n\t\t\t r.Label(ID!(\"metal_v\"), (1.31, -0.88), (0.3, 0.05), &format!(\"Metal: {:.3}\", metallicity));\n\t\t\t r.Label(ID!(\"rough_v\"), (1.31, -0.94), (0.3, 0.05), &format!(\"Rough: {:.3}\", roughness));\n\t\t\t let model_name = Selector::storage(ID!(\"model\")).choice;\n\t\t\t let model_name = options[model_name].clone();\n\t\t\t r.Selector(ID!(\"model\"), (1.31, -0.82), (0.6, 0.1), &mut options);\n\n\t\t\t let t = 1. - i;\n\n\t\t\t use glm::{vec3 as v3, vec4 as v4, Mat4 as m4};\n\t\t\t let m = magnification;\n\t\t\t let model = &glm::translate(\n\t\t\t\t &glm::rotate(&glm::scale(&glm::identity(), &v3(m, m, m)), 90_f32.to_radians(), &v3(-1., 0., 0.)),\n\t\t\t\t &v3(0., 0., -0.3),\n\t\t\t );\n\t\t\t let (c, s, cam_world) = {\n\t\t\t\t rotation += r.Slider(ID!(\"rotation\"), (0.3, -1.), (1., 0.05), 0.05) * 0.01;\n\t\t\t\t let (c, s) = (rotation.cos(), rotation.sin()).mul(0.3);\n\t\t\t\t let t = t.to_radians() * 90.;\n\t\t\t\t (t.cos(), t.sin(), (s, 0., c))\n\t\t\t };\n\n\t\t\t cam1.setView((cam_world, Vec3::zero(), (0, 1, 0)));\n\t\t\t let view = m4::to(cam1.V());\n\t\t\t let (irr, spec, lut) = (skybox.irradiance.Bind(sampl), skybox.specular.Bind(mipmapped), brdf_lut.Bind(sampl));\n\t\t\t let _ = Uniforms!(\n\t\t\t\t render_shd,\n\t\t\t\t (\"irradiance_cubetex\", &irr),\n\t\t\t\t (\"specular_cubetex\", &spec),\n\t\t\t\t (\"brdf_lut_tex\", &lut),\n\t\t\t\t (\"MVPMat\", cam1.MVP(model)),\n\t\t\t\t (\"ModelViewMat\", cam1.MV(model)),\n\t\t\t\t (\"NormalViewMat\", cam1.NV(model)),\n\t\t\t\t (\"NormalMat\", cam1.N(model)),\n\t\t\t\t (\"iCameraWorld\", Vec3(cam_world)),\n\t\t\t\t (\n\t\t\t\t\t \"iLightPos\",\n\t\t\t\t\t [\n\t\t\t\t\t\t Vec4(view * v4(6. * c, 6. * s, 0., 1.)).xyz(),\n\t\t\t\t\t\t Vec4(view * v4(2. * c, 0., 2. * s, 1.)).xyz(),\n\t\t\t\t\t\t Vec4(view * v4(c, s, -2., 1.)).xyz(),\n\t\t\t\t\t\t Vec4(view * v4(-1.5 * s, 1. * c, -2., 1.)).xyz()\n\t\t\t\t\t ]\n\t\t\t\t ),\n\t\t\t\t (\"iLightColor\", [(1., 0., 0., 2.), (0., 0., 1., 2.), (1., 0., 1., 2.), (0., 1., 0., 2.)]),\n\t\t\t\t (\"iAlbedo\", hex_to_rgba(0xD4AF3700).xyz()),\n\t\t\t\t (\"iMetallicity\", metallicity),\n\t\t\t\t (\"iRoughness\", roughness),\n\t\t\t\t (\"iExposure\", 1.),\n\t\t\t\t (\"iMaxLod\", skybox.mip_levels)\n\t\t\t );\n\t\t\t loading_in_progress = !demo_mesh.draw(&model_name);\n\t\t }\n\t\t {\n\t\t\t let s = skybox.specular.Bind(mipmapped);\n\t\t\t let _ = Uniforms!(skybox_shd, (\"skybox_tex\", &s), (\"MVPMat\", cam1.VP()), (\"iExposure\", 1.));\n\t\t\t Skybox::Draw();\n\t\t }\n\n\t\t r.Layout(ID!(\"menu\"), |r, (pos, size)| {\n\t\t\t let (button_w, button_h, padding) = (0.18, 0.06, 0.01);\n\t\t\t let button = |n| (pos.sum(size.mul((button_w * f32(n) + padding * f32(n * 2 + 1), padding))), size.mul((button_w, button_h)));\n\t\t\t let pos = pos.sum(size.mul((0, button_h + padding * 2.)));\n\t\t\t let offset = 0.5 - (button_h + padding * 3.);\n\n\t\t\t r.TextEdit(ID!(\"text\"), pos, size.mul((1, offset)), 0.03);\n\n\t\t\t r.HyperText(ID!(\"hypertext\"), pos.sum(size.mul((0, offset + padding))), size.mul((1, 0.5)), 0.05, db);\n\n\t\t\t let (p, s) = button(4);\n\t\t\t exit = r.Button(ID!(\"exit\"), p, s, \"Exit\");\n\t\t\t show_tooltip(r.hovers_in(p, s) && !exit, p.sum(s.mul(0.5)), \"GUI is easy!\", r);\n\t\t });\n\n\t\t if loading_in_progress {\n\t\t\t r.draw(primitives::Sprite {\n\t\t\t\t pos: mouse_pos,\n\t\t\t\t size: (40., 40.).div(window.aspect()).div(window.size()),\n\t\t\t\t color: (1., 1. - i, 1., 1.),\n\t\t\t\t tex: spinner.frame(i),\n\t\t\t });\n\t\t }\n\n\t\t let mut events = window.poll_events();\n\t\t events.iter().rev().find_map(|e| map_enum!(MouseMove { at, .. } = e => mouse_pos = *at));\n\t\t r.sync_clipboard(&mut window);\n\t\t renderer = r.unlock(&mut window, &mut events);\n\t\t window.swap();\n\n\t\t for e in events {\n\t\t\t match e {\n\t\t\t\t Keyboard { key, state } if Key::Escape == key && state.pressed() => exit = true,\n\t\t\t\t Scroll { at, .. } => {\n\t\t\t\t\t magnification = (magnification + 0.01 * at.y()).clamp(0.01, 1.);\n\t\t\t\t\t rotation += 0.2 * at.x()\n\t\t\t\t }\n\t\t\t\t _ => (), //println!(\"{e:?}\"),\n\t\t\t }\n\t\t }\n\n\t\t if fcatto.changed() {\n\t\t\t println!(\"{}\", fcatto.get());\n\t\t }\n\n\t\t if exit {\n\t\t\t return;\n\t\t }\n\t\t use event::{Event::*, *};\n\t }\n }\n\n pub(crate) fn timeout(active: bool) -> bool {\n\t unsafe {\n\t\t static mut TIME: usize = 0;\n\t\t TIME += 1;\n\t\t if !active {\n\t\t\t TIME = 0\n\t\t }\n\t\t TIME > 60\n\t }\n }\n\n #[derive(Default)]\n pub(crate) struct DeferredMesh {\n\t pub(crate) handle: Option)>>,\n\t pub(crate) mesh: Option<(String, Box)>,\n }\n\n impl DeferredMesh {\n\t pub(crate) fn draw(&mut self, name: &str) -> bool {\n\t\t let Self { handle, mesh } = self;\n\t\t if let Some((n, m)) = mesh {\n\t\t\t m.Draw();\n\t\t\t if n == name {\n\t\t\t\t return true;\n\t\t\t }\n\t\t }\n\n\t\t if handle.is_none() {\n\t\t\t let name = name.to_string();\n\t\t\t *mesh = Some((\"\".into(), Box(Mesh::make_sphere(0.1, 8))));\n\t\t\t *handle = Some(task::spawn(async move { (name.clone(), Model::new_cached(&name)) }));\n\t\t }\n\n\t\t let handle = handle.as_mut().valid();\n\t\t let mut ready = task::block_on(async move { task::poll_once(handle).await });\n\n\t\t if ready.is_some() {\n\t\t\t self.handle = None;\n\t\t\t let (n, m) = ready.take().valid();\n\t\t\t let m: Box = m.map_or_else(\n\t\t\t\t |e| {\n\t\t\t\t\t WARN!(\"Failed to load {n:?}, {e}\");\n\t\t\t\t\t Mesh::make_sphere(0.1, 8).to_trait()\n\t\t\t\t },\n\t\t\t\t |m| Mesh::from(m).to_trait(),\n\t\t\t );\n\t\t\t *mesh = Some((n, m));\n\t\t }\n\t\t false\n\t }\n }\n}", "range": { "end": { "character": 1, "line": 276 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/frontier/main.rs", "version": 0 } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "*}", "range": { "end": { "character": 31, "line": 3 }, "start": { "character": 20, "line": 3 } } }, { "newText": "\n\n\t\t\tlet m = magnification;\n\t\t\tlet model = &glm::translate(\n\t\t\t\t&glm::rotate(&glm::scale(&glm::identity(), &v3(m, m, m)), 90_f32.to_radians(), &v3(-1., 0., 0.)),\n\t\t\t\t&v3(0., 0., -0.3),\n\t\t\t);\n\t\t\tlet (c, s, cam_world) = {\n\t\t\t\trotation += r.Slider(ID!(\"rotation\"), (0.3, -1.), (1., 0.05), 0.05) * 0.01;\n\t\t\t\tlet (c, s) = (rotation.cos(), rotation.sin()).mul(0.3);\n\t\t\t\tlet t = t.to_radians() * 90.;\n\t\t\t\t(t.cos(), t.sin(), (s, 0., c))\n\t\t\t};", "range": { "end": { "character": 18, "line": 123 }, "start": { "character": 18, "line": 123 } } }, { "newText": "cam1.setView((cam_world, Vec3::zero(), (0, 1, 0)));", "range": { "end": { "character": 49, "line": 125 }, "start": { "character": 3, "line": 125 } } }, { "newText": "view", "range": { "end": { "character": 8, "line": 126 }, "start": { "character": 7, "line": 126 } } }, { "newText": "m4::to(cam1.V())", "range": { "end": { "character": 24, "line": 126 }, "start": { "character": 11, "line": 126 } } }, { "newText": "(irr, spec, lut)", "range": { "end": { "character": 12, "line": 127 }, "start": { "character": 7, "line": 127 } } }, { "newText": "(skybox.irradiance.Bind(sampl), skybox.specular.Bind(mipmapped), brdf_lut.Bind(sampl))", "range": { "end": { "character": 4, "line": 130 }, "start": { "character": 15, "line": 127 } } }, { "newText": "_", "range": { "end": { "character": 24, "line": 131 }, "start": { "character": 7, "line": 131 } } }, { "newText": "Uniforms!(\n\t\t\t\trender_shd,\n\t\t\t\t(\"irradiance_cubetex\", &irr),\n\t\t\t\t(\"specular_cubetex\", &spec),\n\t\t\t\t(\"brdf_lut_tex\", &lut),\n\t\t\t\t(\"MVPMat\", cam1.MVP(model)),\n\t\t\t\t(\"ModelViewMat\", cam1.MV(model)),\n\t\t\t\t(\"NormalViewMat\", cam1.NV(model)),\n\t\t\t\t(\"NormalMat\", cam1.N(model)),\n\t\t\t\t(\"iCameraWorld\", Vec3(cam_world)),\n\t\t\t\t(\n\t\t\t\t\t\"iLightPos\",\n\t\t\t\t\t[\n\t\t\t\t\t\tVec4(view * v4(6. * c, 6. * s, 0., 1.)).xyz(),\n\t\t\t\t\t\tVec4(view * v4(2. * c, 0., 2. * s, 1.)).xyz(),\n\t\t\t\t\t\tVec4(view * v4(c, s, -2., 1.)).xyz(),\n\t\t\t\t\t\tVec4(view * v4(-1.5 * s, 1. * c, -2., 1.)).xyz()\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\t(\"iLightColor\", [(1., 0., 0., 2.), (0., 0., 1., 2.), (1., 0., 1., 2.), (0., 1., 0., 2.)]),\n\t\t\t\t(\"iAlbedo\", hex_to_rgba(0xD4AF3700).xyz()),\n\t\t\t\t(\"iMetallicity\", metallicity),\n\t\t\t\t(\"iRoughness\", roughness),\n\t\t\t\t(\"iExposure\", 1.),\n\t\t\t\t(\"iMaxLod\", skybox.mip_levels)\n\t\t\t)", "range": { "end": { "character": 4, "line": 136 }, "start": { "character": 27, "line": 131 } } }, { "newText": "\n\t\t\tloading_in_progress = !demo_mesh.draw(&model_name)", "range": { "end": { "character": 53, "line": 138 }, "start": { "character": 5, "line": 136 } } }, { "newText": "\n\t\t}", "range": { "end": { "character": 3, "line": 168 }, "start": { "character": 54, "line": 138 } } } ], "textDocument": { "uri": "file:///_/code/rust/frontier/main.rs", "version": 0 } } ] }, "kind": "quickfix", "title": "Remove all the unused imports" } ] } 08:20:04.730 Server { "id": "{26188f5c-dccd-4f0a-8bd2-c00e6ef4710d}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "pub(crate) ", "range": { "end": { "character": 0, "line": 0 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs", "version": 0 } } ] }, "kind": "refactor.rewrite", "title": "Change visibility to pub(crate)" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n use LazyFile;\n\n use path::PathBuf::path;\n\n use MessageType;\n\n use path::PathBuf;\n\n use crate::uses::asyn::*;\n\n use crate::uses::*;\n\n use path::PathBuf;\n\n pub mod Save {\n\t use super::*;\n\n\t pub fn Write(p: impl Into, data: impl Into>) {\n\t\t sender().send((p.into(), MessageType::Write, data.into())).expect(FAILED_WRITE);\n\t }\n\t pub fn Append(p: impl Into, data: impl Into>) {\n\t\t sender().send((p.into(), MessageType::Append, data.into())).expect(FAILED_WRITE);\n\t }\n\t pub fn Archive(args: impl CompressArgs) {\n\t\t let (p, data, level) = args.get();\n\t\t sender().send((p, MessageType::ComprW(level), data)).expect(FAILED_WRITE);\n\t }\n\n\t type Args = (PathBuf, Vec, i32);\n\t pub trait CompressArgs {\n\t\t fn get(self) -> Args;\n\t }\n\t impl>, F: Into, C> CompressArgs for (F, T, C)\n\t where\n\t\t i32: Cast,\n\t {\n\t\t fn get(self) -> Args {\n\t\t\t (self.0.into(), self.1.into(), i32(self.2))\n\t\t }\n\t }\n\t impl>, F: Into> CompressArgs for (F, T) {\n\t\t fn get(self) -> Args {\n\t\t\t (self.0.into(), self.1.into(), 0)\n\t\t }\n\t }\n\n\t enum MessageType {\n\t\t Write,\n\t\t Append,\n\t\t ComprW(i32),\n\t\t Close,\n\t }\n\t type Message = (PathBuf, MessageType, Vec);\n\t fn sender() -> &'static Sender {\n\t\t static SENDER: OnceLock> = OnceLock::new();\n\t\t SENDER.get_or_init(move || {\n\t\t\t let (sn, rx): (Sender, Receiver) = chan::unbounded();\n\t\t\t let handle = task::spawn(async move {\n\t\t\t\t while let Ok(msg) = rx.recv_async().await {\n\t\t\t\t\t let disk = task::spawn(async move {\n\t\t\t\t\t\t use MessageType::*;\n\t\t\t\t\t\t let (name, operation, data) = msg;\n\t\t\t\t\t\t let file = match operation {\n\t\t\t\t\t\t\t Write | ComprW(_) => fs::File::create(&name).await,\n\t\t\t\t\t\t\t Append => fs::OpenOptions::new().append(true).create(true).open(&name).await,\n\t\t\t\t\t\t\t Close => return false,\n\t\t\t\t\t\t };\n\n\t\t\t\t\t\t if let Ok(mut file) = file {\n\t\t\t\t\t\t\t let data = if let ComprW(l) = operation {\n\t\t\t\t\t\t\t\t OR_DEFAULT!(zstd::stream::encode_all(&data[..], l))\n\t\t\t\t\t\t\t } else {\n\t\t\t\t\t\t\t\t data\n\t\t\t\t\t\t\t };\n\n\t\t\t\t\t\t\t let _ = file.write_all(&data).await;\n\t\t\t\t\t\t\t EXPECT!(file.sync_all().await);\n\t\t\t\t\t\t } else {\n\t\t\t\t\t\t\t FAIL!(fmt_err(file, &name));\n\t\t\t\t\t\t }\n\t\t\t\t\t\t true\n\t\t\t\t\t });\n\t\t\t\t\t if !disk.await {\n\t\t\t\t\t\t break;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t });\n\n\t\t\t logging::Logger::AddPostmortem(move || {\n\t\t\t\t sender().send((Def(), MessageType::Close, vec![])).expect(\"E| Failed to close write\");\n\t\t\t\t task::block_on(handle);\n\t\t\t });\n\n\t\t\t sn\n\t\t })\n\t }\n }\n\n pub mod Load {\n\t use super::*;\n\t pub fn File(p: impl AsRef) -> Res> {\n\t\t let p: &Path = p.as_ref();\n\t\t fmt_err(std::fs::read(p), p)\n\t }\n\t pub fn Text(p: impl AsRef) -> Res {\n\t\t let p: &Path = p.as_ref();\n\t\t fmt_err(std::fs::read_to_string(p), p)\n\t }\n\t pub fn Archive(p: impl AsRef) -> Res> {\n\t\t let decode = |p| -> Res<_> {\n\t\t\t let f = Res(std::fs::File::open(p))?;\n\t\t\t let b = Res(zstd::stream::decode_all(f))?;\n\t\t\t Ok(b)\n\t\t };\n\t\t let p = p.as_ref();\n\t\t fmt_err(decode(p), p)\n\t }\n }\n\n #[cfg(not(feature = \"fsnotify\"))]\n pub mod Watch {\n\t use super::*;\n\n\t pub struct WatchedFile {\n\t\t text: Box,\n\t }\n\t impl Text {\n\t\t pub fn changed(&self) -> bool {\n\t\t\t false\n\t\t }\n\t\t pub fn get(&mut self) -> &str {\n\t\t\t &self.text\n\t\t }\n\t }\n\t pub fn Text(p: impl Into) -> Res {\n\t\t let path = p.into();\n\t\t let text = Load::Text(&path)?.into_boxed_str();\n\t\t Ok(Text { text })\n\t }\n }\n\n #[cfg(feature = \"fsnotify\")]\n pub mod Watch {\n\t use super::{Lazy::*, *};\n\t use notify::*;\n\n\t pub fn Watch + Clone + 'static>(loader: impl Fn(A) -> LazyFile + 'static, p: A) -> WatchedFile {\n\t\t let loader = {\n\t\t\t let p = p.clone();\n\t\t\t Box(move || {\n\t\t\t\t let p = p.clone();\n\t\t\t\t loader(p)\n\t\t\t })\n\t\t };\n\t\t let file = loader();\n\n\t\t let changed = Arc::new(Mutex::new(false));\n\t\t let c = changed.clone();\n\n\t\t let p = p.into();\n\t\t let mut watcher = {\n\t\t\t let p = p.clone();\n\t\t\t Res(recommended_watcher(move |r| match r {\n\t\t\t\t Ok(_) => *c.lock().unwrap() = true, // TODO IT RESETS!!! FUCK!!!\n\t\t\t\t Err(e) => FAIL!(\"File {p:?}: {e}\"),\n\t\t\t }))\n\t\t }\n\t\t .map_err(|e| FAIL!(\"Watch {p:?}: {e}\"))\n\t\t .ok();\n\n\t\t watcher\n\t\t\t .as_mut()\n\t\t\t .map(|w| w.watch(&p, RecursiveMode::NonRecursive).unwrap_or_else(|_| FAIL!(\"Cannot watch {p:?}\")));\n\n\t\t WatchedFile { file, loader, changed, watcher }\n\t }\n\n\t pub struct WatchedFile {\n\t\t file: LazyFile,\n\t\t loader: Box LazyFile>,\n\t\t changed: Arc>,\n\t\t watcher: Option,\n\t }\n\n\t impl WatchedFile {\n\t\t pub fn changed(&mut self) -> bool {\n\t\t\t let Self { file, loader, changed, .. } = self;\n\t\t\t if !*changed.lock().unwrap() {\n\t\t\t\t return false;\n\t\t\t }\n\n\t\t\t *changed.lock().unwrap() = false;\n\n\t\t\t let mut new = loader();\n\t\t\t if new.get() != file.get() {\n\t\t\t\t *file = new;\n\t\t\t\t return true;\n\t\t\t }\n\t\t\t false\n\t\t }\n\t\t pub fn try_get(&mut self) -> Option<&mut T> {\n\t\t\t self.file.try_get()\n\t\t }\n\t\t pub fn get(&mut self) -> &mut T {\n\t\t\t self.file.get()\n\t\t }\n\t\t pub fn take(self) -> T {\n\t\t\t self.file.take()\n\t\t }\n\t }\n }\n\n pub mod Lazy {\n\t use super::*;\n\n\t pub fn File(p: impl Into) -> LazyFile> {\n\t\t let p = p.into();\n\t\t LazyFile::Loading(task::spawn(async move { read_file(&p).await }))\n\t }\n\t pub fn Text(p: impl Into) -> LazyFile {\n\t\t let p = p.into();\n\t\t LazyFile::Loading(task::spawn(async move { read_text(&p).await }))\n\t }\n\t pub fn Archive(p: impl Into) -> LazyFile> {\n\t\t let p = p.into();\n\t\t LazyFile::Loading(task::spawn(async move {\n\t\t\t let data = Res(read_file(&p).await)?;\n\t\t\t Res(zstd::stream::decode_all(&data[..]))\n\t\t }))\n\t }\n\n\t pub enum LazyFile {\n\t\t Loading(Task>),\n\t\t Done(T),\n\t }\n\n\t impl LazyFile {\n\t\t pub fn try_get(&mut self) -> Option<&mut T> {\n\t\t\t use LazyFile::*;\n\t\t\t match self {\n\t\t\t\t Done(vec) => Some(vec),\n\t\t\t\t Loading(handle) => {\n\t\t\t\t\t let res = task::block_on(task::poll_once(handle))?;\n\t\t\t\t\t *self = Done(OR_DEFAULT!(res));\n\t\t\t\t\t self.try_get()\n\t\t\t\t }\n\t\t\t }\n\t\t }\n\t\t pub fn get(&mut self) -> &mut T {\n\t\t\t use LazyFile::*;\n\t\t\t match self {\n\t\t\t\t Done(vec) => vec,\n\t\t\t\t Loading(handle) => {\n\t\t\t\t\t let res = task::block_on(handle);\n\t\t\t\t\t *self = Done(OR_DEFAULT!(res));\n\t\t\t\t\t self.get()\n\t\t\t\t }\n\t\t\t }\n\t\t }\n\t\t pub fn take(self) -> T {\n\t\t\t use LazyFile::*;\n\t\t\t match self {\n\t\t\t\t Done(vec) => vec,\n\t\t\t\t Loading(handle) => OR_DEFAULT!(task::block_on(handle)),\n\t\t\t }\n\t\t }\n\t }\n }\n\n pub async fn read_file(p: &Path) -> Res> {\n\t async fn read(p: &Path) -> Res> {\n\t\t let mut f = Res(fs::File::open(p).await)?;\n\t\t let mut b = vec![];\n\t\t Res(f.read_to_end(&mut b).await)?;\n\t\t Ok(b)\n\t }\n\t let p = p.as_ref();\n\t fmt_err(read(p).await, p)\n }\n\n pub async fn read_text(p: &Path) -> Res {\n\t async fn read(p: &Path) -> Res {\n\t\t let mut f = Res(fs::File::open(p).await)?;\n\t\t let mut b = String::new();\n\t\t Res(f.read_to_string(&mut b).await)?;\n\t\t Ok(b)\n\t }\n\t let p = p.as_ref();\n\t fmt_err(read(p).await, p)\n }\n\n pub(crate) fn fmt_err(r: Result, p: &Path) -> Res {\n\t r.map_err(|e| format!(\"Could not open file {p:?} - {e}\"))\n }\n\n pub(crate) const FAILED_WRITE: STR = \"E| Failed to send write\";\n\n #[cfg(not(feature = \"zstd\"))]\n pub(crate) mod zstd {\n\t pub mod stream {\n\t\t use super::super::*;\n\t\t pub fn encode_all(s: &[u8], _: i32) -> Res> {\n\t\t\t Ok(s.to_vec())\n\t\t }\n\t\t pub fn decode_all(mut s: R) -> Res> {\n\t\t\t let mut b = vec![];\n\t\t\t Res(s.read_to_end(&mut b))?;\n\t\t\t Ok(b)\n\t\t }\n\t }\n }\n}", "range": { "end": { "character": 1, "line": 345 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs", "version": 0 } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "kind": "rename", "newUri": "file:///_/code/rust/toolbox/kit/policies/file/mod.rs", "oldUri": "file:///_/code/rust/toolbox/kit/policies/file.rs" } ] }, "kind": "refactor", "title": "Convert file.rs to file/mod.rs" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "\n\t\tpub fn encode_all(s: &[u8], _: i32) -> Res> {\n\t\t\tOk(s.to_vec())\n\t\t}", "range": { "end": { "character": 17, "line": 334 }, "start": { "character": 17, "line": 334 } } }, { "newText": "pub", "range": { "end": { "character": 5, "line": 335 }, "start": { "character": 2, "line": 335 } } }, { "newText": "fn decode_all(mut s: R) -> Res> {\n\t\t\tlet mut b = vec![];\n\t\t\tRes(s.read_to_end(&mut b))?;\n\t\t\tOk(b)\n\t\t}\n\t}", "range": { "end": { "character": 2, "line": 344 }, "start": { "character": 6, "line": 335 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/policies/file.rs", "version": 0 } } ] }, "kind": "quickfix", "title": "Remove all the unused imports" } ] } 08:20:05.573 Server { "id": "{d1b90206-65bf-4e13-84c8-e454b87763eb}", "jsonrpc": "2.0", "result": [ { "edit": { "documentChanges": [ { "edits": [ { "newText": "pub(crate) ", "range": { "end": { "character": 0, "line": 0 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs", "version": 0 } } ] }, "kind": "refactor.rewrite", "title": "Change visibility to pub(crate)" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "mod modname {\n use std::ffi::CString;\n\n use super::{args::*, object::*, parsing::*, policy::*, state::*, types::*, uniform::*};\n\n use crate::uses::{asyn::*, *};\n\n use std::ffi::CString;\n\n #[macro_export]\n macro_rules! SHADER {\n\t ($n: ident, $($body: expr),+) => {\n\t\t #[allow(non_upper_case_globals)]\n\t\t pub const $n: $crate::uses::GL::macro_uses::InlineShader = $crate::uses::GL::macro_uses::InlineShader(stringify!($n), const_format::concatcp!($crate::uses::GL::unigl::GLSL_VERSION, $($body,)+));\n\t };\n }\n\n pub struct ShaderDyn {\n\t pub s: Shader,\n\t pub(crate) src: Box,\n }\n\n pub struct Shader {\n\t pub(crate) program: Object,\n\t pub(crate) name: Box,\n\t pub(crate) uniforms: HashMap,\n\t pub(crate) tex_cache: HashMap,\n }\n\n impl Shader {\n\t pub fn pure<'a>(args: impl PureShaderArgs<'a>) -> Self {\n\t\t Self::new(args).unwrap()\n\t }\n\t pub fn new<'a>(args: impl ShaderArgs<'a>) -> Res {\n\t\t let (program, name) = ShaderManager::compile(args.get())?;\n\n\t\t Ok(Self {\n\t\t\t program,\n\t\t\t name,\n\t\t\t uniforms: Def(),\n\t\t\t tex_cache: Def(),\n\t\t })\n\t }\n\t pub fn Bind(&mut self) -> ShaderBinding {\n\t\t ShaderBinding::new(self)\n\t }\n }\n\n pub struct ShaderBinding<'l> {\n\t pub(crate) shd: &'l mut Shader,\n }\n\n impl<'l> ShaderBinding<'l> {\n\t pub fn new(o: &'l mut Shader) -> Self {\n\t\t ShdProg::Lock(o.program.obj);\n\t\t ShdProg::Bind(o.program.obj);\n\t\t Self { shd: o }\n\t } //TODO uniform blocks\n\t pub fn Uniform(&mut self, (id, name): (u32, &str), args: impl UniformArgs) {\n\t\t ASSERT!(crate::uses::GL::macro_uses::uniforms_use::id(name).0 == id, \"Use Uniforms!() macro to set uniforms\");\n\t\t let addr = if let Some(found) = self.shd.uniforms.get(&id) {\n\t\t\t let _collision_map = LocalStatic!(HashMap, { Def() });\n\t\t\t ASSERT!(_collision_map.entry(id).or_insert(name.into()) == name, \"Unifrom collision at entry {name}\");\n\t\t\t *found\n\t\t } else {\n\t\t\t let c_name = match CString::new(name) {\n\t\t\t\t Ok(str) => str,\n\t\t\t\t Err(e) => {\n\t\t\t\t\t FAIL!(e);\n\t\t\t\t\t return;\n\t\t\t\t }\n\t\t\t };\n\t\t\t let addr = GLCheck!(gl::GetUniformLocation(self.shd.program.obj, c_name.as_ptr()));\n\t\t\t if addr == -1 {\n\t\t\t\t INFO!(\"No uniform {name:?} in shader {:?}, or uniform was optimized out\", self.shd.name);\n\t\t\t }\n\t\t\t self.shd.uniforms.insert(id, addr);\n\t\t\t addr\n\t\t };\n\n\t\t args.get(addr, &mut self.shd.tex_cache);\n\t }\n }\n\n impl Drop for ShaderBinding<'_> {\n\t fn drop(&mut self) {\n\t\t ShdProg::Unlock();\n\t }\n }\n\n pub(crate) enum ShaderType {\n\t vertex = 0,\n\t fragment = 1,\n\t geometry = 2,\n }\n\n pub(crate) const SHD_DEFS: [(GLenum, &str); 3] = [(gl::VERTEX_SHADER, \"vertex\"), (gl::FRAGMENT_SHADER, \"pixel\"), (gl::GEOMETRY_SHADER, \"geometry\")];\n\n #[derive(Default)]\n pub struct ShaderManager {\n\t pub(crate) objects: HashMap, u32>,\n\t pub(crate) sources: HashMap, CString>,\n\t pub(crate) loading: Vec>,\n\t pub(crate) watched: HashMap, Arc<(Box, FS::Watch::WatchedFile)>>,\n }\n\n impl ShaderManager {\n\t pub fn LoadSources(filename: impl ToString) {\n\t\t let Self { loading, watched, .. } = Self::get();\n\t\t let name = filename.to_string();\n\t\t loading.push(task::spawn(async move {\n\t\t\t let data = OR_DEFAULT!(FS::read_text(name.as_ref()).await);\n\t\t\t let p = parse_shader_sources(&name, &data);\n\n\t\t\t /*let name = Arc::new((name.into_boxed_str(), true));\n\t\t\tp.iter().for_each(|(n, _)| watched.insert(n.clone(), name.clone()).sink()); //TODO HOTRELOAD SHADERS, ADD DUMMY ON FAIL*/\n\n\t\t\t p\n\t\t }));\n\t }\n\t pub fn ForceSource(name: impl ToString, source: impl ToString) {\n\t\t let Self { objects, sources, watched, .. } = Self::get();\n\t\t let name = name.to_string().into();\n\t\t watched.remove(&name);\n\t\t objects.remove(&name).map(|o| GLCheck!(gl::DeleteShader(o)));\n\t\t sources.insert(name, CString::new(source.to_string()).unwrap());\n\t }\n\t pub fn ClearSources() {\n\t\t let Self { objects, .. } = Self::get();\n\t\t objects.iter().for_each(|(_, &o)| GLCheck!(gl::DeleteShader(o)));\n\t\t objects.clear();\n\t }\n\n\t pub(crate) fn compile((vert, geom, pix): CompileArgs) -> Res<(Object, Box)> {\n\t\t let dummy = (\n\t\t\t \"void main() { gl_Position = vec4(0., 0., 0., 1.); }\",\n\t\t\t \"layout(location = 0) out vec4 glFragColor; void main() { glFragColor = vec4(1., 0., 0., 1.); }\",\n\t\t ); //TODO\n\n\t\t let get_object = |(name, typ): (C<'_>, _)| {\n\t\t\t let Self { objects, sources, loading, .. } = Self::get();\n\t\t\t if let Some(found) = objects.get(&*name) {\n\t\t\t\t return Ok(*found);\n\t\t\t }\n\n\t\t\t task::block_on(async {\n\t\t\t\t stream::iter(loading.drain(..))\n\t\t\t\t\t .then(|t| t)\n\t\t\t\t\t .for_each(|p| {\n\t\t\t\t\t\t p.into_iter()\n\t\t\t\t\t\t\t .for_each(|(name, body)| sources.insert(name.clone(), body).map(|_| WARN!(\"Shader source {name:?} was already loaded\")).sink())\n\t\t\t\t\t })\n\t\t\t\t\t .await\n\t\t\t });\n\n\t\t\t let (name, (typ, type_name)) = (name.into_owned().into_boxed_str(), SHD_DEFS[typ as usize]);\n\t\t\t let source = Res(sources.get(&name)).map_err(|_| format!(\"No {type_name} shader {name:?} in loaded sources\"))?;\n\n\t\t\t let obj = GLCheck!(gl::CreateShader(typ));\n\t\t\t ASSERT!(obj != 0, \"Failed to create {type_name} shader object {name:?}\");\n\t\t\t GLCheck!(gl::ShaderSource(obj, 1, &source.as_ptr(), ptr::null()));\n\t\t\t GLCheck!(gl::CompileShader(obj));\n\t\t\t let mut status: i32 = 0;\n\t\t\t GLCheck!(gl::GetShaderiv(obj, gl::COMPILE_STATUS, &mut status));\n\t\t\t if GLbool::to(status) != gl::TRUE {\n\t\t\t\t let err = format!(\"Error compiling {type_name} shader {name:?}\\n{}\", print_shader_log(obj));\n\t\t\t\t GLCheck!(gl::DeleteShader(obj));\n\t\t\t\t return Err(err);\n\t\t\t }\n\n\t\t\t objects.insert(name, obj);\n\t\t\t Ok(obj)\n\t\t };\n\n\t\t use ShaderType::*;\n\t\t let (name, objects) = if let Some(geom) = geom {\n\t\t\t let n = format!(\"v:{vert}|g:{geom}|p:{pix}\");\n\t\t\t let o = vec![(vert, vertex), (geom, geometry), (pix, fragment)];\n\t\t\t (n, o)\n\t\t } else {\n\t\t\t let n = format!(\"v:{vert}|p:{pix}\");\n\t\t\t let o = vec![(vert, vertex), (pix, fragment)];\n\t\t\t (n, o)\n\t\t };\n\n\t\t let objects = objects.into_iter().map(get_object).collect::>>()?;\n\t\t let prog = Object::new();\n\t\t let obj = prog.obj;\n\n\t\t objects.iter().for_each(|&o| GLCheck!(gl::AttachShader(obj, o)));\n\t\t GLCheck!(gl::LinkProgram(obj));\n\t\t let mut status: i32 = 0;\n\t\t GLCheck!(gl::GetProgramiv(obj, gl::LINK_STATUS, &mut status));\n\t\t objects.iter().for_each(|&o| GLCheck!(gl::DetachShader(obj, o)));\n\n\t\t if GLbool::to(status) == gl::FALSE {\n\t\t\t return Err(format!(\"Error linking program {name:?}, {obj}\\n{}\", print_shader_log(obj)));\n\t\t }\n\n\t\t Ok((prog, name.into()))\n\t }\n\n\t pub(crate) fn inline_source(name: &str, source: &str) {\n\t\t let m = Self::get();\n\t\t if let Some(_found) = m.sources.get(name) {\n\t\t\t ASSERT!(*_found == CString::new(source).unwrap(), \"Shader {name:?} already exists\",);\n\t\t } else {\n\t\t\t m.sources.insert(name.into(), CString::new(source).unwrap());\n\t\t }\n\t }\n\n\t pub(crate) fn get() -> &'static mut Self {\n\t\t LocalStatic!(ShaderManager, { Def() })\n\t }\n }\n\n impl<'a> From for C<'a> {\n\t fn from(v: InlineShader) -> Self {\n\t\t let InlineShader(v, v_t) = v;\n\t\t ShaderManager::inline_source(v, v_t);\n\t\t v.into()\n\t }\n }\n\n pub struct InlineShader(pub STR, pub STR);\n}", "range": { "end": { "character": 42, "line": 215 }, "start": { "character": 0, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs", "version": 0 } }, { "edits": [ { "newText": "modname::SHADER", "range": { "end": { "character": 6, "line": 297 }, "start": { "character": 0, "line": 297 } } }, { "newText": "modname::SHADER", "range": { "end": { "character": 6, "line": 362 }, "start": { "character": 0, "line": 362 } } } ], "textDocument": { "uri": "file:///_/code/rust/shworld/test.rs", "version": null } }, { "edits": [ { "newText": "modname::SHADER", "range": { "end": { "character": 6, "line": 264 }, "start": { "character": 0, "line": 264 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/utility/pbrt.rs", "version": null } } ] }, "kind": "refactor.extract", "title": "Extract Module" }, { "edit": { "documentChanges": [ { "kind": "rename", "newUri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader/mod.rs", "oldUri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs" } ] }, "kind": "refactor", "title": "Convert shader.rs to shader/mod.rs" }, { "edit": { "documentChanges": [ { "edits": [ { "newText": "types", "range": { "end": { "character": 60, "line": 0 }, "start": { "character": 55, "line": 0 } } }, { "newText": "uniform", "range": { "end": { "character": 70, "line": 0 }, "start": { "character": 65, "line": 0 } } }, { "newText": "}", "range": { "end": { "character": 86, "line": 0 }, "start": { "character": 73, "line": 0 } } } ], "textDocument": { "uri": "file:///_/code/rust/toolbox/kit/opengl/shader/shader.rs", "version": 0 } } ] }, "kind": "quickfix", "title": "Remove all the unused imports" } ] }