diff --git a/1-Get started/1-Introduction.md b/1-Get started/1-Introduction.md new file mode 100644 index 0000000..fa607cb --- /dev/null +++ b/1-Get started/1-Introduction.md @@ -0,0 +1,45 @@ +# Introduction to EasyLogon +Last update: 23-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/1-Get%20started/1-Introduction.md)) + +## Table of Contents +- [What is EasyLogon](#what-is-easylogon) +- [EasyLogon pricing](#easylogon-pricing) +- [Account registration](#account-registration) +- [Next steps](#next-steps) + +## What is EasyLogon +EasyLogon is a service that allows you to store all their passwords in one place and sign in on any website by scanning a QR code with their phone + +With EasyLogon you as a website owner or developer can easily integrate QR code sign in into your website without any significant changes to the code + +Advantages of EasyLogon: +- **Easy integration** - Integrate QR code authentication in 15 minutes +- **Doesn't require Federated ID** - you don't need to integrate synchronization with third-party accounts (like "Sign in with Google") to integrate QR code sign in, just one small plugin +- **Secure** - EasyLogon works basically the same way, the browser autocomplete do. Besides, we securely store and transfer data of your users +- **Convenient** - Ability to easily sign in on your website from any device within a few seconds will greatly imporve your users' experience. Besides, such authentication method will encourage your users to use stronger passwords, which will increase security of personal data on your website as well +- **Global** - EasyLogon allows to sign in with QR code on _any_ website, even those which haven't added EasyLogon on their website yet, by using a simple web application, giving more reasons to use our service + +Watch a quick video to know more: + + + +## EasyLogon pricing +We have launched Beta access to EasyLogon service. **During beta testing all features of EasyLogon are free to use** for both end-users and developers. However, once Release version is rolled out we introduce progressive pay-as-you-go pricing system for developers + +For more information about pricing, please contact our marketing team at [business@foxdev.studio](mailto:business@foxdev.studio) + +## Account registration +1. Go to [EasyLogon Developer Console homepage](https://easylogon.foxdev.studio) +2. Click "Get started" button +3. Fill out requested information: Account name, Email address and password +4. Click "Create account" +5. Go to your Email inbox +6. Find a mail from our service (may take some time to be delivered) +7. Click "Confirm account" + +Now that you've created and confirmed an account you can move to the other step + +## Next steps +- [Adding a domain](/docs/1-Get%20started/2-Adding%20a%20domain) +- [Plugin integration](/docs/1-Get%20started/3-Plugin%20integration) +- [Plugin customization](/docs/1-Get%20started/4-Plugin%20customization) diff --git a/1-Get started/2-Adding a domain.md b/1-Get started/2-Adding a domain.md new file mode 100644 index 0000000..b995ce3 --- /dev/null +++ b/1-Get started/2-Adding a domain.md @@ -0,0 +1,140 @@ +# Adding a domain +Last update: 13-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/1-Get%20started/2-Adding%20a%20domain.md)) + +## Table of Contents +- [Add new domain](#add-new-domain) + - [On registration page](#on-registration-page) + - [On profile page](#on-profile-page) +- [Verify domain](#verify-domain) + - [Option 1: DNS verification](#option-1-dns-verification) + - [Option 2: File verification](#option-2-file-verification) +- [Next steps](#next-steps) + +## Add new domain +### On registration page +[As soon as you created your account](https://easylogon.foxdev.studio/get-started), you can add your domains. Simply type in your domain into the text field and click "Next" +![Add domain on account creation](https://easylogon.foxdev.studio/docs/add-domain-getstarted.png) + +> **Note** +> +> Don't include protocol or path when adding a domain: +> +> **Incorrect:** +> ``` +> https://example.com +> https://en.example.com/index.html +> ``` +> **Correct:** +> ``` +> example.com +> en.example.com +> ``` + +If you want to use EasyLogon on all your subdomains, prepend an asterisk wildcard to your domain name: +``` +*.example.com +``` +This will include all subdomains you have on your primary domain. For example: +- en.example.com +- ru.example.com +- forum.example.com +- app.example.com +- etc. + +If you have more than one domain, you'd like to connect, enumerate them, separating with semicolon sign (;) + +For example, if you type in following string: +``` +*.example.com;myweb.site;site.test.com +``` +You will add following domains to your account: +- example.com (with all subdomains) +- myweb.site +- site.test.com + +### On profile page +If you don't want to add domains now, you can do it later on your [profile page](https://easylogon.foxdev.studio/profile) + +Go to Domains section and click "+ Add new domain" + +![Add domain on profile page](https://easylogon.foxdev.studio/docs/add-domain-profile1.png) + +Type in your domain and press Enter or "+" button + +![Add domain on profile page](https://easylogon.foxdev.studio/docs/add-domain-profile2.png) + +Just like on the Get Started page, you can use wildcards to include all subdomains + +## Verify domain +Once you've added your domain to the account, you need to verify it before you can use QR sign in on your website. + +To do so, go to your [profile page](https://easylogon.foxdev.studio/profile) and in Domains section click on your domain that requires verification + +![Verify domain](https://easylogon.foxdev.studio/docs/verify-domain.png) + +From now, you have two options to verify your domain: with DNS record or with file + +### Option 1: DNS verification +To verify your domain with DNS you will need to add a new DNS record on your domain registrar website + +Here some instructions on how to add DNS records for most popular providers: +- [GoDaddy](https://www.godaddy.com/help/add-an-a-record-19238) +- [NameCheap](https://www.namecheap.com/support/knowledgebase/article.aspx/10357/2254/video-how-do-i-add-a-txt-record-for-my-domain/) +- [Name.com](https://www.name.com/support/articles/115004972547-Adding-a-TXT-Record) + +If you use another provider do the following steps: +1. [Identify you domain host](https://support.google.com/a/answer/48323) +2. In a second browser window or tab, sign in to your domain host account +3. Go to your domain’s DNS records. The page might be called something like DNS Management, Name Server Management, Control Panel, or Advanced Settings +4. Select the option to add a new record + +DNS record details are shown in the domain verification window: + +![DNS Verification](https://easylogon.foxdev.studio/docs/verify-dns.png) + +This is how it looks when you add DNS record on Name.com: + +![Adding DNS record on Name.com](https://easylogon.foxdev.studio/docs/verify-dns1.png) + +Click "Add record", go back to EasyLogon tab and click "Check verification" to verify your domain + +> **Note** +> +> It may take up to 48 hours for DNS servers to sync your changes, so if verification fails, try to check verification later + +If verification is successfull, the page will reload and "requires verification" label will disappear + +> **Note** +> +> After successful verification you should not delete the DNS entry, because our service will periodically re-verify your domain to ensure that it is still yours + +### Option 2: File verification +Alternatively, you can verify your domain by uploading a text file to the root of your website + +First, download file from domain verification window by clicking "Download file" + +![Download file](https://easylogon.foxdev.studio/docs/verify-file1.png) + +Then upload the file to the root folder of your website on your server. Here some ways to do so: + +If you have a dedicated VPS/VDS server, see [Transfer Files Between Remote and Local Systems Over SSH](https://linuxhandbook.com/transfer-files-ssh/) + +If you use a hosting for your website, see instructions for control panel, installed on your hosting: +- [Plesk](https://docs.plesk.com/en-US/12.5/customer-guide/websites-and-domains/website-content/uploading-content-with-file-manager.74105/#:~:text=%20To%20upload%20a%20website%20from%20your%20computer,Upload%20Files%2C%20select%20the%20archive%20file%2C...%20More%20) +- [cPanel](https://www.peopleshost.com/2018/07/how-to-upload-files-using-file-manager-in-cpanel/) + +As the result, the file should be accessible via browser at `https://yourdomain.com/_ezlverification_challenge.txt` + +If you done it right, when navigating to `https://yourdomain.com/_ezlverification_challenge.txt` you should see your verification string + +When it's done, click "Check verification" on EasyLogon domain verification window + +If verification is successfull, the page will reload and "requires verification" label will disappear + +> **Note** +> +> After successful verification you should not delete the file, because our service will periodically re-verify your domain to ensure that it is still yours + +## Next steps +- [Plugin integration](/docs/1-Get%20started/3-Plugin%20integration) +- [Plugin customization](/docs/1-Get%20started/4-Plugin%20customization) \ No newline at end of file diff --git a/1-Get started/3-Plugin integration.md b/1-Get started/3-Plugin integration.md new file mode 100644 index 0000000..0d1a26d --- /dev/null +++ b/1-Get started/3-Plugin integration.md @@ -0,0 +1,87 @@ +# Plugin integration +Last update: 23-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/1-Get%20started/3-Plugin%20integration.md)) + +## Table of Contents +- [Obtain code](#obtain-code) + - [CSS selectors](#css-selectors) +- [Insert code to your website](#insert-code-to-your-website) + - [React](#react) +- [Next steps](#next-steps) + +Once you created account, added and verified your domain, it's time to add QR code widget to your website + +## Obtain code +Go to your [profile page](https://easylogon.foxdev.studio/profile#CreateWidget) and click "Get widget code" button in Domains section + +On Configure widget panel you can see how widget will look on your website in an interactive preview section + +You can change widget appearance by changing widget type + +![Widget configuration](https://easylogon.foxdev.studio/docs/widget-preview.png) + +### CSS selectors +Next step is to bind your login/password fields so widget can automatically insert user's credentials and "click" sign in button + +Watch this video to know how to obtain selectors: + + + +Materials: +- [Copy CSS Selector extension for Chrome](https://chrome.google.com/webstore/detail/copy-css-selector) +- [Validation script](https://easylogon.foxdev.studio/docs/test-script.js) + +## Insert code to your website +When all fields are filled and tested, next step is to insert generated code into your sign in page + +Click "Copy" button at the bottom of panel + +![Copy widget code](https://easylogon.foxdev.studio/docs/widget-copy.png) + +Open HTML code of your authentication page. If you use a CMS on your website, learn how to edit page source code + + + +Insert container part of the plugin into place you'd like to see the widget and the script part at the bottom of the `` tag + +![Paste code into webpage](https://easylogon.foxdev.studio/docs/paste-code.png) + +> **Note** +> +> If you have problems with plugin integration, feel free to [contact our support](https://easylogon.foxdev.studio/support) and we'll do our best to assist you or even setup integration for you. This is free + +### React +If your web application is using ReactJS framework, you need to perform additional steps: + +Instead of pasting script block of plugin (second part of code on picures above), paste following code into `componentDidMount` method of your component (if you are using class-based components): +```js +componentDidMount() +{ + var script = document.createElement("script"); + script.src = "https://easylogon.foxdev.studio/ezlog.js"; + script.defer = true; + script.async = true; + document.body.appendChild(script); +} +``` + +or if you're using functional components in `useEffect` method: + +```js +useEffect(() => +{ + var script = document.createElement("script"); + script.src = "https://easylogon.foxdev.studio/ezlog.js"; + script.defer = true; + script.async = true; + document.body.appendChild(script); +}, [ ]); +``` + +## Next steps +- [Plugin customization](/docs/1-Get%20started/4-Plugin%20customization) diff --git a/1-Get started/4-Plugin customization.md b/1-Get started/4-Plugin customization.md new file mode 100644 index 0000000..6e9c65a --- /dev/null +++ b/1-Get started/4-Plugin customization.md @@ -0,0 +1,42 @@ +# Plugin customization +Last update: 13-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/1-Get%20started/3-Plugin%20customization.md)) + +## Table of Contents +- [Plugin types](#obtain-code) +- [Custom CSS](#custom-css) +- [Related links](#related-links) + +When everything is up and running, it's time to think about appearance. We provide some tools to customize your widget + +## Plugin types +There're four basic types of widget which work out of the box: +- Inline (`inline`) - QR code is placed next to sign in form +- Button (`button`) - "Sign in with QR code" button which is placed under sign in button +- Inline button (`inlineButton`) - Small "Sign in with QR code" button which is placed on the right from password field +- Link (`link`) - Hyperlink which opens QR code in another browser tab + +![Widget types](https://easylogon.foxdev.studio/docs/widget-types.png) + +To see how each type of widget acts, go to [widget contructor panel](https://easylogon.foxdev.studio/profile#CreateWidget) + +## Custom CSS +Since QR code button is injected into your website code, it can be heavily customized with CSS + +You can attach new CSS file to your page head and use `#ezl-btn` selector to apply styling rules to the widget + +### Example +```css +#ezl-btn +{ + background: gray; + border: 2px solid red; + color: white; + font-family: monospace; +} +``` +![Customized button](https://easylogon.foxdev.studio/docs/custom-btn.png) + +For more information about customization and limitations, see [Plugin API reference](/docs/2-API%20Reference/1-Plugin) + +## Related links +- [Plugin API reference](/docs/2-API%20Reference/1-Plugin) diff --git a/2-API Reference/1-Plugin.md b/2-API Reference/1-Plugin.md new file mode 100644 index 0000000..46d4f2d --- /dev/null +++ b/2-API Reference/1-Plugin.md @@ -0,0 +1,93 @@ +# Plugin API reference +Last update: 23-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/2-API%20Reference/1-Plugin.md)) + +## Table of Contents +- [Plugin attributes](#plugin-attributes) + - [Structure sample](#structure-sample) +- [Plugin CSS selectors](#plugin-css-selectors) + - [#ezl-btn](##ezl-btn) + - [.ezl-container](#.ezl-container) +- [Flyout customization](#flyout-customization) +- [Related links](#related-links) + +## Plugin attributes +### Structure sample +```html + +
+
+ + + +``` + +| Attribute | Description | Valid values | +| --------- | ----------- | ------------ | +| data-widgettype | Type of widget appearance. Go to [widget creation panel](/profile#CreateWidget) to see difference in action | `inlineButton`, `button`, `inline`, `link` | +| data-login | CSS selector which points at an `` field for user's email/login on authentication page | Valid CSS selector pointing at the exact `` element | +| data-password | CSS selector which points at an `` field for user's password on authentication page | Valid CSS selector pointing at the exact `` element | +| data-login | CSS selector which points at an HTML element which is used as "Sign in" button on authentication page | Valid CSS selector pointing at the exact `` element | + +## Plugin CSS selectors +### #ezl-btn +This CSS selector points at the "Sign in with QR code" button (or link) and allow you to customize its appearance + +#### Supported widget types +- `inlineButton` +- `button` +- `link` + +#### Examples +```css +#ezl-btn +{ + background: gray; + border: 2px solid red; + color: white; + font-family: monospace; +} +``` +![Customized button](https://easylogon.foxdev.studio/docs/custom-btn.png) + +### .ezl-container +This CSS selector points at the plugin container + +> **Note** +> +> Even though `.ezl-container` is presented in all widget types. It is advised to use this selector only with `inline` widget + +#### Supported widget types +- `inline` + +#### Examples +```css +.ezl-container +{ + background: gray; + + /* Inline widget requires size at least 200x100 pixels */ + width: 200px; + height: 200px; +} + +.ezl-container iframe +{ + filter: brightness(0) invert(1); +} +``` +![Customized inline widget](https://easylogon.foxdev.studio/docs/custom-inline.png) + +> **Note** +> Since widget's QR code is currently displayed inside an `iframe`, it is impossible for now to customize it more precisely + +## Flyout customization +Currently we support only button (and partially `inline`) customization. At the moment customization of a flyout is unsupported + +## Related links +- [Plugin integration](/docs/1-Get%20started/3-Plugin%20integration) +- [Plugin customization](/docs/1-Get%20started/4-Plugin%20customization) diff --git a/3-Legal documents/1-Terms of Service.md b/3-Legal documents/1-Terms of Service.md new file mode 100644 index 0000000..0efcb2d --- /dev/null +++ b/3-Legal documents/1-Terms of Service.md @@ -0,0 +1,57 @@ +# EasyLogon Terms of Service +Last update: 28-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/3-Legal%20documents/1-Terms%20of%20Service.md)) + +## 1. General Provisions +1. FoxDev Studio LLC (hereinafter "Company") offers the Internet User or a company (hereinafter "User") to use EasyLogon Developer Console service available at [https://easylogon.foxdev.studio](https://easylogon.foxdev.studio) (hereinafter "Service") +2. User agrees to these Terms by registering an account in Service database +3. EasyLogon Terms of Service (hereinafter "Terms") has a complimentary document - EasyLogon Privacy Policy (hereinafter "Policy") which is an integral part of Terms and can be found on [https://easylogon.foxdev.studio/privacy](https://easylogon.foxdev.studio/privacy). +4. If Company makes any changes to these Terms, which User does not accept, the User shall cease using the Service +5. Up-to-date version of Terms can be found on [https://easylogon.foxdev.studio/terms](http://easylogon.foxdev.studio/terms). +6. New versions of Terms are automatically applied to Customers as soon as they were published. +7. Other versions of Terms, including outdated and upcoming versions presented in official EasyLogon documentation repository on GitHub ([https://github.com/foxdev-studio/easylogon-docs](https://github.com/foxdev-studio/easylogon-docs)) have no effect. +8. Company is obliged to notify User only about significant changes of the Policy. + 1. Significant changes are changes which include, but not limited to: + - Alterations in process of sharing Customer's personal data with Third-parties; + - Alterations in pricings and payment processes; + - Alterations in restrictions and forbidden behaviors. + +## 2. Use of Service +1. In order to use Service on User's domain User must add it on User's Service account page and verify its ownership with tools provided by Service +2. Domain verification is automatically conducted each 30 calendar days and each time verification required for expired domain. If Domain stays unverified for 30 calendar days it is automatically removed from User's Service account (hereinafter "Account") + +## 3. Service pricing +1. Service pricing for User is determined from the number of sign-ins occasion via Service from all User's connected domains per month (hereinafter "TpM") +2. Before TpM value enters a paid range, User can use Service for free with no billing account connection required +3. If TpM value reaches a paid range, User must connect a billing account in Account page and pay all due invoices in order to continue using Service +4. Currently, User can connect PayPal billing account to use continuous due invoice payment +5. User can request direct invocing by contacting Service support +6. Up-to-date Service pricings can be found at homepage of Service +### 3.1. Beta testing amendments +1. For the period of Service beta testing (from 10-Jan-21 to TBD, hereinafter "Beta test") User can use all Service features for free with no billing account connection required +2. During beta test, Preview Service pricings can be requested by contacting Service support team +3. During beta test, paragraphs 3.4, 3.5, 3.6 of Terms have no effect + +## 4. Restrictions and sanctions +1. Service administrators and maintainers (hereinafter "Administrators") have right to suspend User's Service account which will result in inability to sign into Account or use Service features if User violates one or more paragraph of Terms +2. In most cases Account suspension is permanent and Account cannot be restored +3. Account can be restored in some cases, such as: + - Account was suspended by a mistake; + - Terms violation which led to Account suspension was not severe and Administrators stated conditions to meet in order to lift suspension; +4. For non-severe violations Administrators can notify User to address the issues before suspending the Account +5. User cannot have more that one Service account. Having two or more Service accounts will result in suspension of all newest Accounts owned by User +6. Account name must not contain inappropriate words. These include, but not limited to: + - Hate speech; + - Obscene language; + - Words or sentences which may offend a group of people +7. Administrators can ban certain domains from using Service. These decisions can be made based on domain rating, trust factors and popularity +8. Domain bans may be lifted by contacting Service support and providing sufficient materials to make the decision +9. Service administrators can remove domain from Account if they have sufficient information about domain ownership issues +10. On Account suspension and domains bans Administrators must are obliged to notify user about descision, stating reason and potential steps for issue resolution + +## 5. Age restriction +1. By accepting Terms User confirms that they are at least 18 (eighteen) years of age and have the right to accept Terms or have right to accept Terms on belhalf of other person or Company +3. Company assumes no responsibility for liabilities related to age misrepresentation. + +## 6. Intellectual property +1. All materials, products, and services provided by Service are the property of Company including all copyrights, trademarks, patents, and other intellectual property, unless it is explicitly stated otherwise +2. User do not have a permission to reproduce or redistribute the Company’s intellectual property in any way, including electronic, digital, or new trademark registrations \ No newline at end of file diff --git a/3-Legal documents/2-Privacy policy.md b/3-Legal documents/2-Privacy policy.md new file mode 100644 index 0000000..93cda45 --- /dev/null +++ b/3-Legal documents/2-Privacy policy.md @@ -0,0 +1,47 @@ +# EasyLogon Privacy Policy +Last update: 26-Dec-21 ([View change history](https://github.com/foxdev-studio/easylogon-docs/commits/master/3-Legal%20documents/2-Privacy%20policy.md)) + +## 1. General terms +1. EasyLogon Privacy Policy (hereinafter "Policy") is applied to software developers, system administrators, internet-service maintainers, etc. (hereinafter "Customers") who implement EasyLogon solutions (like QR code authorization) to their software (hereinafter "Service"). +2. End-users (persons, who utilize EasyLogon mobile application and use EasyLogon QR code authorization to access their personal data) can find EasyLogon Privacy Policy for end-users at [https://ezlog.app/privacy](https://ezlog.app/privacy). +3. By using our Service (by implementing it in software or accessing [https://easylogon.foxdev.studio/](https://easylogon.foxdev.studio/) website) Customers agree to this Policy and EasyLogon Terms of Use. +4. Policy is a complimentary document to EasyLogon Terms of Service which can be found on [https://easylogon.foxdev.studio/terms](https://easylogon.foxdev.studio/terms). +5. Up-to-date version of Policy can be found on [https://easylogon.foxdev.studio/privacy](http://easylogon.foxdev.studio/privacy). +6. New versions of Policy are automatically applied to Customers as soon as they were published. +7. Other versions of Policy, including outdated and upcoming versions presented in official EasyLogon documentation repository on GitHub ([https://github.com/foxdev-studio/easylogon-docs](https://github.com/foxdev-studio/easylogon-docs)) have no effect. +8. FoxDev Studio LLC (hereinafter "Company") is obliged to notify Customer only about significant changes of the Policy. + 1. Significant changes are changes which include, but not limited to: + - Alterations in process of sharing Customer's personal data with Third-parties. + 2. Insignificant changes are changes which include, but not limited to: + - Extension or reduction of personal data, collected by the Service, described in paragraph 2.1; + - Alterations in the list of employees which have access to the data, described in paragraph 3.1; + - Timings of personal data retention, described in paragraphs 2.3 and 3.6. + +## 2. Personal data +1. By using Service Customers delegate rights to the Company store, alter, process, delete and share their personal data on Company servers. This data includes: + - Account name; + - E-mail address; + - E-mail address verificaiton status; + - Password hash; + - One-time password generator secret key; + - List of domain names, connected to the Service; + - Statistics which includes number of sign-ins via the Service on connected domains; + - Technical support conversation history. +2. Company does not store any other personal data, unless it is stated in paragraph 2.1. of the Policy +3. Customers can revoke their approval by stopping using the Service and deleting their account on [https://easylogon.foxdev.studio/editProfile](https://easylogon.foxdev.studio/editProfile). Approval will be revoked in 30 (thirty) calendar days after request has been issued. + +## 3. Data protection +1. Customers allow certain number of Company employees access and review their personal data stored on Company servers. Number of employees includes, but not limited to: + - Chief Security Officer; + - Chief Executing Officer; + - GDPR Compliance Officer; + - Database administrators; + - Technical Support Service members. + 1. All Company employees which have an access to Customer's data are obliged to sign a life-time non-disclosure agreement related to Customer's personal data +2. All Customers' passwords stored on Company servers are encrypted using one-way hashing algorithms and cannot be revealed to anyone. +3. Company may share your personal data with government authorities if there is any order issued. +4. Company doesn't share your personal data with thrid-parties in any way (excluding the case described in paragraph 3.3 of the Policy) +5. Following the General Data Protection Regulations (GDPR) Customers may request to access all data stored on Company servers. To do so, Customer should go to [https://easylogon.foxdev.studio/editProfile](https://easylogon.foxdev.studio/editProfile), click "Download data" button. +6. Customers can request data deletion by submitting EasyLogon acount deletion request. To do so, Customer should go to [https://easylogon.foxdev.studio/editProfile](https://easylogon.foxdev.studio/editProfile), click "Delete account" button and fill out a form. All personal data will be deleted in 30 (thirty) calendar days. +7. Company may use depersonalized data in its internal and external reports. Depersonalized data cannot include any data which can compromise Customers' account security on the Service, account names, domain names or conversation mailchains. +8. Company is obliged to notify Customers about all data leaks or potential data leaks which can involve Customer's personal data within 3 days since the incident.