You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			498 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			498 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| <html>
 | |
| 
 | |
| <!--
 | |
| 
 | |
| !!! WARNING !!!
 | |
| 
 | |
| This file was auto-generated from readme/debugging.md and any manual change
 | |
| made to it will be overwritten. To make a change to this file please modify
 | |
| the source Markdown file:
 | |
| 
 | |
| https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
 | |
| 
 | |
| -->
 | |
| 
 | |
| <head>
 | |
| 	<title>How to enable debugging | Joplin</title>
 | |
| 	<meta charset="utf-8">
 | |
| 	<meta http-equiv="X-UA-Compatible" content="IE=edge">
 | |
| 	<meta name="viewport" content="width=device-width, initial-scale=1">
 | |
| 	<link rel="stylesheet" href="https://joplinapp.org/css/bootstrap.min.css">
 | |
| 	<link rel="shortcut icon" type="image/x-icon" href="https://joplinapp.org/favicon.ico">
 | |
| 	<!-- <link rel="stylesheet" href="https://joplinapp.org/css/fontawesome-all.min.css">  -->
 | |
| 	<link rel="stylesheet" href="https://joplinapp.org/css/fork-awesome.min.css"> 
 | |
| 	<script src="https://joplinapp.org/js/jquery-3.2.1.slim.min.js"></script>
 | |
| 	<style>
 | |
| 	body {
 | |
| 		background-color: #F1F1F1;
 | |
| 		color: #333333;
 | |
| 	}
 | |
| 
 | |
| 	.root {
 | |
| 		overflow: hidden;
 | |
| 	}
 | |
| 
 | |
| 	a[href^="mailto:"] {
 | |
| 		word-break: break-all;
 | |
| 	}
 | |
| 
 | |
| 	table {
 | |
| 		margin-bottom: 1em;
 | |
| 	}
 | |
| 	td, th {
 | |
| 		padding: .8em;
 | |
| 		border: 1px solid #ccc;
 | |
| 	}
 | |
| 
 | |
| 	.page-markdown table pre,
 | |
| 	.page-markdown table blockquote {
 | |
| 		margin-bottom: 0;
 | |
| 	}
 | |
| 
 | |
| 	.page-markdown table pre,
 | |
| 	.page-markdown table blockquote {
 | |
| 		margin-bottom: 0;
 | |
| 	}
 | |
| 
 | |
| 	.page-markdown table pre {
 | |
| 		background-color: rgba(0,0,0,0);
 | |
| 		border: none;
 | |
| 		margin: 0;
 | |
| 		padding: 0;
 | |
| 	}
 | |
| 
 | |
| 	h1, h2 {
 | |
| 		border-bottom: 1px solid #eaecef;
 | |
| 		padding-bottom: 0.3em;
 | |
| 		font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
 | |
| 		font-weight: 600;
 | |
| 		font-size: 2em;
 | |
| 		margin-bottom: 16px;
 | |
| 	}
 | |
| 	h2 {
 | |
| 		font-size: 1.6em;
 | |
| 	}
 | |
| 	h3 {
 | |
| 		font-size: 1.3em;
 | |
| 	}
 | |
| 	code {
 | |
| 		color: black;
 | |
| 		background-color: #eee;
 | |
| 		border: 1px solid #ccc;
 | |
| 		font-size: .85em;
 | |
| 	/*	word-break: break-all; */
 | |
| 	}
 | |
| 	pre code {
 | |
| 		border: none;
 | |
| 	}
 | |
| 	pre {
 | |
| 		font-size: .85em;
 | |
| 	}
 | |
| 	blockquote {
 | |
| 		font-size: 1em;
 | |
| 		color: #555;
 | |
| 	};
 | |
| 	#toc ul {
 | |
| 		margin-bottom: 10px;
 | |
| 	}
 | |
| 	#toc > ul > li {
 | |
| 		margin-bottom: 10px;
 | |
| 	}
 | |
| 	#toc {
 | |
| 		padding-bottom: 1em;
 | |
| 	}
 | |
| 	.title {
 | |
| 		display: flex;
 | |
| 		align-items: center;
 | |
| 	}
 | |
| 	.title-icon {
 | |
| 		display: flex;
 | |
| 		height: 1em;
 | |
| 	}
 | |
| 	.title-text {
 | |
| 		display: flex;
 | |
| 		font-weight: normal;
 | |
| 		margin-bottom: .2em;
 | |
| 		margin-left: .5em;
 | |
| 	}
 | |
| 	.sub-title {
 | |
| 		font-weight: normal;
 | |
| 	}
 | |
| 	.container {
 | |
| 		background-color: white;
 | |
| 		padding: 0;
 | |
| 		box-shadow: 0 10px 20px #888888;
 | |
| 	}
 | |
| 	table.screenshots {
 | |
| 		margin-top: 2em;
 | |
| 		margin-bottom: 2em;
 | |
| 	}
 | |
| 	table.screenshots th {
 | |
| 		height: 3em;
 | |
| 		text-align: center;
 | |
| 	}
 | |
| 	table.screenshots th, 
 | |
| 	table.screenshots td {
 | |
| 		border: 1px solid #C2C2C2;
 | |
| 	}
 | |
| 	img[align="left"] {
 | |
| 		margin-right: 10px;
 | |
| 		margin-bottom: 10px;
 | |
| 	}
 | |
| 	.mobile-screenshot {
 | |
| 		height: 40em;
 | |
| 		padding: 1em;
 | |
| 	}
 | |
| 	.cli-screenshot-wrapper {
 | |
| 		background-color: black;
 | |
| 		vertical-align: top;
 | |
| 		padding: 1em 2em 1em 1em;
 | |
| 	}
 | |
| 	.cli-screenshot {
 | |
| 		font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
 | |
| 		background-color: black;
 | |
| 		color: white;
 | |
| 		border: none;
 | |
| 	}
 | |
| 	.cli-screenshot .prompt {
 | |
| 		color: #48C2F0;
 | |
| 	}
 | |
| 	.top-screenshot {
 | |
| 		margin-top: 2em;
 | |
| 		text-align: center;
 | |
| 	}
 | |
| 	.header {
 | |
| 		position: relative;
 | |
| 		padding-left: 2em;
 | |
| 		padding-right: 2em;
 | |
| 		padding-top: 1em;
 | |
| 		padding-bottom: 1em;
 | |
| 		color: white;
 | |
| 		background-color: #2B2B3D;
 | |
| 	}
 | |
| 	.header a h1 {
 | |
| 		color: white;
 | |
| 	}
 | |
| 	.header a:hover {
 | |
| 		text-decoration: none;
 | |
| 	}
 | |
| 	.content {
 | |
| 		padding-left: 2em;
 | |
| 		padding-right: 2em;
 | |
| 		padding-bottom: 2em;
 | |
| 		padding-top: 2em;
 | |
| 	}
 | |
| 	.forkme {
 | |
| 		position: absolute;
 | |
| 		right: 0;
 | |
| 		top:0;
 | |
| 	}
 | |
| 	.nav-wrapper {
 | |
| 		position: relative;
 | |
| 		width: inherit;
 | |
| 	}
 | |
| 	.nav {
 | |
| 		background-color: black;
 | |
| 		display: flex;
 | |
| 		flex-direction: row;
 | |
| 		align-items: center;
 | |
| 	}
 | |
| 	.nav.sticky {
 | |
| 		position:fixed;
 | |
| 		top: 0;
 | |
| 		width: inherit;
 | |
| 		box-shadow: 0 0 10px #000000;
 | |
| 	}
 | |
| 	.nav a {
 | |
| 		color: white;
 | |
| 		display: inline-block;
 | |
| 		padding: .6em .9em .6em .9em;
 | |
| 	}
 | |
| 	.nav ul {
 | |
| 		padding-left: 2em;
 | |
| 		margin-bottom: 0;
 | |
| 		display: table-cell;
 | |
| 		display: flex;
 | |
| 		width: 100%;
 | |
| 		/* For GSoC: */
 | |
| 		min-width: 470px;
 | |
| 	}
 | |
| 	.nav ul li {
 | |
| 		display: inline-block;
 | |
| 		padding: 0;
 | |
| 	}
 | |
| 	.nav li.selected {
 | |
| 		background-color: #222;
 | |
| 		font-weight: bold;
 | |
| 	}
 | |
| 	.nav-right {
 | |
| 		display: flex;
 | |
| 		text-align: right;
 | |
| 		vertical-align: middle;
 | |
| 		line-height: 0;
 | |
| 		margin-right: 10px;
 | |
| 	}
 | |
| 	.nav-right .share-btn {
 | |
| 		display: none;
 | |
| 	}
 | |
| 	.nav-right .small-share-btn {
 | |
| 		display: none;
 | |
| 	}
 | |
| 	.footer {
 | |
| 		padding: 2em;
 | |
| 		border-top: 1px solid #d4d4d4;
 | |
| 		margin-top: 2em;
 | |
| 		color: gray;
 | |
| 		font-size: .9em;
 | |
| 	}
 | |
| 	a.heading-anchor {
 | |
| 		display: inline-block;
 | |
| 		opacity: 0;
 | |
| 		width: 1.3em;
 | |
| 		font-size: 0.7em;
 | |
| 		margin-left: 0.4em;
 | |
| 		line-height: 1em;
 | |
| 		text-decoration: none;
 | |
| 		transition: opacity 0.3s;
 | |
| 	}
 | |
| 	a.heading-anchor:hover,
 | |
| 	h1:hover a.heading-anchor,
 | |
| 	h2:hover a.heading-anchor,
 | |
| 	h3:hover a.heading-anchor,
 | |
| 	h4:hover a.heading-anchor,
 | |
| 	h5:hover a.heading-anchor,
 | |
| 	h6:hover a.heading-anchor {
 | |
| 		opacity: 1;
 | |
| 	}
 | |
| 
 | |
| 	@media (min-width: 992px) {
 | |
| 		.content{
 | |
| 			display: flex;
 | |
| 		}
 | |
| 
 | |
| 		#toc{
 | |
| 			display: block!important;
 | |
| 			align-self: flex-start;
 | |
| 			width: 300px;
 | |
| 			position: sticky; top: 20px; left: 0;            
 | |
| 		}
 | |
| 
 | |
| 		.main{
 | |
| 			width: calc(100% - 300px);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	.bottom-links {
 | |
| 		display: flex;
 | |
| 		justify-content: center;
 | |
| 		border-top: 1px solid #d4d4d4;
 | |
| 		margin-top: 30px;
 | |
| 		padding-top: 25px;
 | |
| 	}
 | |
| 
 | |
| 	@media all and (min-width: 400px) {
 | |
| 		.nav-right .share-btn {
 | |
| 			display: inline-block;
 | |
| 		}
 | |
| 		.nav-right .small-share-btn {
 | |
| 			display: none;
 | |
| 		}
 | |
| 	}
 | |
| </style>
 | |
| </head>
 | |
| 
 | |
| <body>
 | |
| 
 | |
| <div class="container root page-debugging">
 | |
| 
 | |
| <div class="header">
 | |
| 	<a class="forkme" href="https://github.com/laurent22/joplin"><img src="https://joplinapp.org/images/ForkMe.png"/></a>
 | |
| 	<a href="https://joplinapp.org"><h1 class="title"><img class="title-icon" src="https://joplinapp.org/images/Icon512.png"><span class="title-text">Joplin</span></h1></a>
 | |
| 	<p class="sub-title">An open source note taking and to-do application with synchronisation capabilities</p>
 | |
| </div>
 | |
| 
 | |
| <div class="nav-wrapper">
 | |
| 	<div class="nav">
 | |
| 		<ul>
 | |
| 			<li class=""><a href="https://joplinapp.org/" title="Home"><i class="fa fa-home"></i></a></li>
 | |
| 			<li><a href="https://discourse.joplinapp.org" title="Forum">Forum</a></li>
 | |
| 			<li><a class="gsoc" href="https://joplinapp.org/gsoc2021/index/" title="Google Summer of Code 2021">GSoC 2021</a></li>
 | |
| 		</ul>
 | |
| 		<div class="nav-right">
 | |
| 			<iframe class="share-btn share-btn-github" src="https://ghbtns.com/github-btn.html?user=laurent22&repo=joplin&type=star&count=true" frameborder="0" scrolling="0" width="115px" height="20px"></iframe>
 | |
| 		</div>
 | |
| 	</div>
 | |
| </div>
 | |
| 
 | |
| <div class="content">
 | |
| 	<div id="toc"><ul>
 | |
| <li>
 | |
| <p>Applications</p>
 | |
| <ul>
 | |
| <li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
 | |
| <li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
 | |
| <li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
 | |
| <li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li>
 | |
| <p>Support</p>
 | |
| <ul>
 | |
| <li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
 | |
| <li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
 | |
| <li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
 | |
| <li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
 | |
| <li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
 | |
| <li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
 | |
| <li><a href="https://joplinapp.org/faq/">FAQ</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li>
 | |
| <p>Joplin API - Get Started</p>
 | |
| <ul>
 | |
| <li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
 | |
| <li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
 | |
| <li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li>
 | |
| <p>Joplin API - References</p>
 | |
| <ul>
 | |
| <li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
 | |
| <li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
 | |
| <li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
 | |
| <li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
 | |
| <li><a href="https://joplinapp.org/api/references/plugin_theming/">Plugin theming</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li>
 | |
| <p>Development</p>
 | |
| <ul>
 | |
| <li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
 | |
| <li><a href="https://joplinapp.org/spec/server_sharing/">Server: Sharing</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li>
 | |
| <p>Google Summer of Code 2021</p>
 | |
| <ul>
 | |
| <li><a href="https://joplinapp.org/gsoc2021/index/">Google Summer of Code 2021</a></li>
 | |
| <li><a href="https://joplinapp.org/gsoc2021/pull_request_guidelines/">How to submit a GSoC pull request</a></li>
 | |
| <li><a href="https://joplinapp.org/gsoc2021/ideas/">Project Ideas</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| <li>
 | |
| <p>About</p>
 | |
| <ul>
 | |
| <li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
 | |
| <li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
 | |
| <li><a href="https://joplinapp.org/changelog_server/">Changelog (Server)</a></li>
 | |
| <li><a href="https://joplinapp.org/stats/">Stats</a></li>
 | |
| <li><a href="https://joplinapp.org/donate/">Donate</a></li>
 | |
| </ul>
 | |
| </li>
 | |
| </ul>
 | |
| </div>
 | |
| 
 | |
| 	<div class="main">
 | |
| <p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=E8JMYD2LQ8MMA&lc=GB&item_name=Joplin+Development&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"><img src="https://joplinapp.org/images/badges/Donate-PayPal-green.svg" alt="Donate using PayPal"></a> <a href="https://github.com/sponsors/laurent22/"><img src="https://joplinapp.org/images/badges/GitHub-Badge.svg" alt="Sponsor on GitHub"></a> <a href="https://www.patreon.com/joplin"><img src="https://joplinapp.org/images/badges/Patreon-Badge.svg" alt="Become a patron"></a> <a href="https://joplinapp.org/donate/#donations"><img src="https://joplinapp.org/images/badges/Donate-IBAN.svg" alt="Donate using IBAN"></a></p>
 | |
| <hr>
 | |
| <h1>How to enable debugging<a name="how-to-enable-debugging" href="#how-to-enable-debugging" class="heading-anchor">🔗</a></h1>
 | |
| <p>It is possible to get the apps to display or log more information that might help debug various issues.</p>
 | |
| <h2>Desktop application<a name="desktop-application" href="#desktop-application" class="heading-anchor">🔗</a></h2>
 | |
| <ul>
 | |
| <li>Click on menu <strong>Help > Open Profile Directory</strong> and add a file named "flags.txt" in your directory with the following content: <code>--open-dev-tools --debug --log-level debug</code></li>
 | |
| <li>Restart the application</li>
 | |
| <li>The development tools should now be opened. Click the "Console" tab</li>
 | |
| <li>Now repeat the action that was causing problem. The console might output warnings or errors - please add them to the GitHub issue. Also open log.txt in the config folder and if there is any error or warning, please also add them to the issue.</li>
 | |
| </ul>
 | |
| <h2>CLI application<a name="cli-application" href="#cli-application" class="heading-anchor">🔗</a></h2>
 | |
| <ul>
 | |
| <li>Start the app with <code>joplin --debug --log-level debug</code></li>
 | |
| <li>Check log.txt as specified above for the desktop application and attach the log to the GitHub issue (or just the warnings/errors if any). The profile directory would be in <code>~/.config/joplin</code>.</li>
 | |
| </ul>
 | |
| <h2>Mobile application<a name="mobile-application" href="#mobile-application" class="heading-anchor">🔗</a></h2>
 | |
| <ul>
 | |
| <li>In the Configuration screen, press on the <strong>Log button</strong> and post a screenshot of any error/warning.</li>
 | |
| </ul>
 | |
| <h1>Creating a low-level bug report on Android<a name="creating-a-low-level-bug-report-on-android" href="#creating-a-low-level-bug-report-on-android" class="heading-anchor">🔗</a></h1>
 | |
| <p><a href="https://developer.android.com/studio/debug/bug-report">https://developer.android.com/studio/debug/bug-report</a></p>
 | |
| <p>To get a bug report directly from your device, do the following:</p>
 | |
| <ul>
 | |
| <li>Be sure you have <a href="https://developer.android.com/studio/debug/dev-options">Developer Options</a> enabled.</li>
 | |
| <li>In Developer options, tap Take bug report.</li>
 | |
| <li>Select the type of bug report you want and tap Report.</li>
 | |
| </ul>
 | |
| <p>After a moment you get a notification that the bug report is ready. To share the bug report, tap the notification.</p>
 | |
| <h1>Creating a low-level bug report on iOS<a name="creating-a-low-level-bug-report-on-ios" href="#creating-a-low-level-bug-report-on-ios" class="heading-anchor">🔗</a></h1>
 | |
| <p>Some crashes cannot be investigated using Joplin's own tools. In that case, it can be very helpful to provide a native iOS crash report.</p>
 | |
| <p>For this, please follow these instructions:</p>
 | |
| <p>You can send it to this address <a href="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/AdresseSupport.png">https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/AdresseSupport.png</a></p>
 | |
| <p><a href="https://developer.apple.com/library/content/qa/qa1747/_index.html">https://developer.apple.com/library/content/qa/qa1747/_index.html</a></p>
 | |
| <p>Getting Crash Logs Directly From a Device Without Xcode</p>
 | |
| <p>Your users can retrieve crash reports from their device and send them to you via email by following these instructions.</p>
 | |
| <p>(It is not possible to get device console logs directly from a device)</p>
 | |
| <ol>
 | |
| <li>
 | |
| <p>Open Settings app</p>
 | |
| </li>
 | |
| <li>
 | |
| <p>Go to Privacy, then Diagnostics & Usage</p>
 | |
| </li>
 | |
| <li>
 | |
| <p>Select Diagnostics & Usage Data</p>
 | |
| </li>
 | |
| <li>
 | |
| <p>Locate the log for the crashed app. The logs will be named in the format: <code><AppName>_<DateTime>_<DeviceName></code></p>
 | |
| </li>
 | |
| <li>
 | |
| <p>Select the desired log. Then, using the text selection UI select the entire text of the log. Once the text is selected, tap Copy</p>
 | |
| </li>
 | |
| <li>
 | |
| <p>Paste the copied text to Mail and send to an email address as desired</p>
 | |
| </li>
 | |
| </ol>
 | |
| 
 | |
| 		<div class="bottom-links">
 | |
| 			<a href="https://github.com/laurent22/joplin/blob/dev/readme/debugging.md">
 | |
| 				<i class="fa fa-github"></i> Improve this doc
 | |
| 			</a>
 | |
| 		</div>
 | |
| <script>
 | |
| 	function stickyHeader() { 
 | |
| 		return; // Disabled
 | |
| 
 | |
| 		if ($(window).scrollTop() > 179) {
 | |
| 			$('.nav').addClass('sticky'); 
 | |
| 		} else {
 | |
| 			$('.nav').removeClass('sticky');
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	$(window).scroll(function() {
 | |
| 		stickyHeader();
 | |
| 	});
 | |
| 
 | |
| 	(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 | |
| 	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 | |
| 	m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 | |
| 	})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
 | |
| 	ga('create', 'UA-103586105-1', 'auto');
 | |
| 	ga('send', 'pageview');
 | |
| </script>
 | |
| 
 | |
| </div></div>
 | |
| 
 | |
| <div class="footer">
 | |
| Copyright (C) 2016-2021 Laurent Cozic
 | |
| </div>
 | |
| </body>
 | |
| </html>
 |