trainocate.com
Open in
urlscan Pro
13.64.154.142
Public Scan
Submission: On March 01 via api from SG — Scanned from SG
Summary
TLS certificate: Issued by Go Daddy Secure Certificate Authority... on February 1st 2023. Valid for: a year.
This is the only time trainocate.com was scanned on urlscan.io!
urlscan.io Verdict: No classification
Domain & IP information
IP Address | AS Autonomous System | ||
---|---|---|---|
1 | 13.64.154.142 13.64.154.142 | 8075 (MICROSOFT...) (MICROSOFT-CORP-MSN-AS-BLOCK) | |
11 | 2600:9000:223... 2600:9000:223b:ce00:1:9091:5500:93a1 | 16509 (AMAZON-02) (AMAZON-02) | |
1 | 2403:e800:e80... 2403:e800:e80b::2a63:8c8b | 4637 (ASN-TELST...) (ASN-TELSTRA-GLOBAL Telstra Global) | |
1 | 2404:6800:400... 2404:6800:4003:c11::61 | 15169 (GOOGLE) (GOOGLE) | |
2 | 2404:6800:400... 2404:6800:4003:c03::66 | 15169 (GOOGLE) (GOOGLE) | |
1 | 2404:6800:400... 2404:6800:4003:c04::9c | 15169 (GOOGLE) (GOOGLE) | |
1 | 2600:9000:223... 2600:9000:223b:a400:2:53b2:240:93a1 | 16509 (AMAZON-02) (AMAZON-02) | |
4 4 | 2620:1ec:21::14 2620:1ec:21::14 | 8068 (MICROSOFT...) (MICROSOFT-CORP-MSN-AS-BLOCK) | |
1 | 13.107.42.14 13.107.42.14 | 8068 (MICROSOFT...) (MICROSOFT-CORP-MSN-AS-BLOCK) | |
19 | 9 |
ASN4637 (ASN-TELSTRA-GLOBAL Telstra Global, HK)
snap.licdn.com |
ASN16509 (AMAZON-02, US)
cdn.linkedin.oribi.io |
ASN8068 (MICROSOFT-CORP-MSN-AS-BLOCK, US)
px.ads.linkedin.com | |
www.linkedin.com |
Apex Domain Subdomains |
Transfer | |
---|---|---|
12 |
trainocate.com
trainocate.com cdn.trainocate.com |
178 KB |
5 |
linkedin.com
4 redirects
px.ads.linkedin.com — Cisco Umbrella Rank: 361 www.linkedin.com — Cisco Umbrella Rank: 564 px4.ads.linkedin.com — Cisco Umbrella Rank: 6058 |
4 KB |
2 |
google-analytics.com
www.google-analytics.com — Cisco Umbrella Rank: 30 |
20 KB |
1 |
oribi.io
cdn.linkedin.oribi.io — Cisco Umbrella Rank: 813 |
374 B |
1 |
doubleclick.net
stats.g.doubleclick.net — Cisco Umbrella Rank: 77 |
344 B |
1 |
googletagmanager.com
www.googletagmanager.com — Cisco Umbrella Rank: 44 |
44 KB |
1 |
licdn.com
snap.licdn.com — Cisco Umbrella Rank: 704 |
5 KB |
19 | 7 |
Domain | Requested by | |
---|---|---|
11 | cdn.trainocate.com |
trainocate.com
cdn.trainocate.com |
3 | px.ads.linkedin.com | 3 redirects |
2 | www.google-analytics.com |
www.googletagmanager.com
www.google-analytics.com |
1 | px4.ads.linkedin.com |
trainocate.com
|
1 | www.linkedin.com | 1 redirects |
1 | cdn.linkedin.oribi.io |
snap.licdn.com
|
1 | stats.g.doubleclick.net |
www.google-analytics.com
|
1 | www.googletagmanager.com |
trainocate.com
|
1 | snap.licdn.com |
trainocate.com
|
1 | trainocate.com | |
19 | 10 |
This site contains links to these domains. Also see Links.
Domain |
---|
blog.trainocate.com |
www.facebook.com |
twitter.com |
sg.linkedin.com |
www.youtube.com |
Subject Issuer | Validity | Valid | |
---|---|---|---|
*.trainocate.com Go Daddy Secure Certificate Authority - G2 |
2023-02-01 - 2024-02-03 |
a year | crt.sh |
snap.licdn.com DigiCert SHA2 Secure Server CA |
2023-02-01 - 2024-01-31 |
a year | crt.sh |
*.google-analytics.com GTS CA 1C3 |
2023-02-08 - 2023-05-03 |
3 months | crt.sh |
*.g.doubleclick.net GTS CA 1C3 |
2023-02-08 - 2023-05-03 |
3 months | crt.sh |
linkedin.oribi.io Amazon RSA 2048 M01 |
2023-02-24 - 2023-08-06 |
5 months | crt.sh |
This page contains 1 frames:
Primary Page:
https://trainocate.com/sg/courses/trend-micro/tmcpds
Frame ID: B71DE89811DE8707EA91F4700B8CBCFF
Requests: 21 HTTP requests in this frame
Screenshot
Page Title
tmcpds - Trend Microâ„¢ Deep Security 20 Training For Certified ProfessionalsDetected technologies
Google Analytics (Analytics) ExpandDetected patterns
- google-analytics\.com/(?:ga|urchin|analytics)\.js
Google Tag Manager (Tag Managers) Expand
Detected patterns
- googletagmanager\.com/gtag/js
Linkedin Insight Tag (Analytics) Expand
Detected patterns
- snap\.licdn\.com/li\.lms-analytics/insight\.min\.js
Page Statistics
5 Outgoing links
These are links going to different origins than the main page.
Title: Blog
Search URL Search Domain Scan URL
Search URL Search Domain Scan URL
Search URL Search Domain Scan URL
Search URL Search Domain Scan URL
Search URL Search Domain Scan URL
Redirected requests
There were HTTP redirect chains for the following requests:
Request Chain 19- https://px.ads.linkedin.com/collect?v=2&fmt=js&pid=903523&time=1677653334146&url=https%3A%2F%2Ftrainocate.com%2Fsg%2Fcourses%2Ftrend-micro%2Ftmcpds HTTP 302
- https://px.ads.linkedin.com/collect?v=2&fmt=js&pid=903523&time=1677653334146&url=https%3A%2F%2Ftrainocate.com%2Fsg%2Fcourses%2Ftrend-micro%2Ftmcpds&cookiesTest=true HTTP 302
- https://www.linkedin.com/px/li_sync?redirect=https%3A%2F%2Fpx.ads.linkedin.com%2Fcollect%3Fv%3D2%26fmt%3Djs%26pid%3D903523%26time%3D1677653334146%26url%3Dhttps%253A%252F%252Ftrainocate.com%252Fsg%252Fcourses%252Ftrend-micro%252Ftmcpds%26cookiesTest%3Dtrue%26liSync%3Dtrue HTTP 302
- https://px.ads.linkedin.com/collect?v=2&fmt=js&pid=903523&time=1677653334146&url=https%3A%2F%2Ftrainocate.com%2Fsg%2Fcourses%2Ftrend-micro%2Ftmcpds&cookiesTest=true&liSync=true HTTP 302
- https://px4.ads.linkedin.com/collect?v=2&fmt=js&pid=903523&time=1677653334146&url=https%3A%2F%2Ftrainocate.com%2Fsg%2Fcourses%2Ftrend-micro%2Ftmcpds&cookiesTest=true&liSync=true&e_ipv6=AQLNTSrE1U1mWgAAAYab7lsJjnfd52rSjyI4vWtIrzaEWdfGy0hYTNzWFnqNA9BAAXXhPj68H1_h
19 HTTP transactions
Method Protocol |
Resource Path |
Size x-fer |
Type MIME-Type |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET H2 |
Primary Request
tmcpds
trainocate.com/sg/courses/trend-micro/ |
207 KB 50 KB |
Document
text/html |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
montserrat-v14-latin-500.woff2
cdn.trainocate.com/fonts/ |
12 KB 13 KB |
Font
application/font-woff2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
test-act6.js
cdn.trainocate.com/js/ |
139 KB 34 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
webforms-test6.js
cdn.trainocate.com/js/ |
10 KB 4 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
trainocate-trendmicro-training-b.svg
cdn.trainocate.com/Vendor-Banner/sg/ |
37 KB 17 KB |
Image
image/svg+xml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
insight.min.js
snap.licdn.com/li.lms-analytics/ |
13 KB 5 KB |
Script
application/x-javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H3 |
custom510.css
cdn.trainocate.com/css/ |
157 KB 22 KB |
Stylesheet
text/css |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H3 |
search-trainocate.svg
cdn.trainocate.com/ |
348 B 2 KB |
Image
image/svg+xml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H3 |
ask-now-orange.png
cdn.trainocate.com/ |
2 KB 3 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H3 |
add-to-cart-orange.png
cdn.trainocate.com/ |
2 KB 3 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
custom510.js
cdn.trainocate.com/js/ |
76 KB 22 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
js
www.googletagmanager.com/gtag/ |
111 KB 44 KB |
Script
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
231 B 0 |
Image
image/svg+xml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET DATA |
truncated
/ |
273 B 0 |
Image
image/svg+xml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H3 |
trainocate-socialmedia-ico.png
cdn.trainocate.com/ |
2 KB 3 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H3 |
social-media-icons-trn.png
cdn.trainocate.com/ |
3 KB 4 KB |
Image
image/png |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
analytics.js
www.google-analytics.com/ |
49 KB 20 KB |
Script
text/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
POST H2 |
collect
www.google-analytics.com/j/ |
2 B 205 B |
XHR
text/plain |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
POST H2 |
collect
stats.g.doubleclick.net/j/ |
1 B 344 B |
XHR
text/plain |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
token
cdn.linkedin.oribi.io/partner/903523/domain/trainocate.com/ |
36 B 374 B |
XHR
application/json |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET H2 |
collect
px4.ads.linkedin.com/ Redirect Chain
|
0 489 B |
Image
application/javascript |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
Request headers
Response headers
Redirect headers
|
Verdicts & Comments Add Verdict or Comment
122 JavaScript Global Variables
These are the non-standard "global" variables defined on the window object. These can be helpful in identifying possible client-side frameworks and code.
boolean| credentialless function| Print function| WebForm_PostBackOptions function| WebForm_DoPostBackWithOptions object| __pendingCallbacks number| __synchronousCallBackIndex boolean| __nonMSDOMBrowser string| __theFormPostData object| __theFormPostCollection object| __callbackTextTypes object| __disabledControlArray function| WebForm_GetScrollX function| WebForm_GetScrollY function| WebForm_SaveScrollPositionSubmit function| WebForm_SaveScrollPositionOnSubmit function| WebForm_RestoreScrollPosition string| Page_ValidationVer boolean| Page_IsValid boolean| Page_BlockSubmit object| Page_InvalidControlToBeFocused object| Page_TextTypes function| ValidatorUpdateDisplay function| ValidatorUpdateIsValid function| AllValidatorsValid function| ValidatorHookupControlID function| ValidatorHookupControl function| ValidatorHookupEvent function| ValidatorGetValue function| Page_ClientValidate function| ValidatorCommonOnSubmit function| ValidatorOnChange function| ValidatedTextBoxOnKeyPress function| ValidatedControlOnBlur function| ValidatorValidate function| ValidatorSetFocus function| IsInVisibleContainer function| IsValidationGroupMatch function| ValidatorOnLoad function| RegularExpressionValidatorEvaluateIsValid function| ValidatorTrim function| RequiredFieldValidatorEvaluateIsValid function| ValidationSummaryOnSubmit object| theForm function| __doPostBack function| Sys$Enum$parse function| Sys$Enum$toString function| Sys$Component$_setProperties function| Sys$Component$_setReferences function| $create function| $addHandler function| $addHandlers function| $clearHandlers function| $removeHandler function| $get function| $find function| Type object| Sys object| _events function| WebForm_OnSubmit function| openModal function| openModalCheck function| closeModal function| toggleForm function| toggleDisplay string| _linkedin_partner_id object| _linkedin_data_partner_ids function| schema_date function| SideEnquiry object| Page_Validators object| ContentPlaceHolder1_rfvCdEnquiryFN object| ContentPlaceHolder1_revfnEnquiryFN object| ContentPlaceHolder1_rfvCdEnquiryLN object| ContentPlaceHolder1_revCdEnquiryLN object| ContentPlaceHolder1_rfvCdEnquiryEmail object| ContentPlaceHolder1_revSideEnquiryEmail object| ContentPlaceHolder1_rfvCdEnquiryPhone object| ContentPlaceHolder1_revCdEnquiryPhone object| ContentPlaceHolder1_rfvCdEnquiryMessage object| ContentPlaceHolder1_rfvCaptchaCode object| ContentPlaceHolder1_rfvFirstName object| ContentPlaceHolder1_revFirstName object| ContentPlaceHolder1_rfvLastName object| ContentPlaceHolder1_revLastName object| ContentPlaceHolder1_rfvEmail object| ContentPlaceHolder1_revEmail object| ContentPlaceHolder1_rfvPhone object| ContentPlaceHolder1_revphone object| ContentPlaceHolder1_rfvMessage object| rfvSideEnquiryFN object| revSideEnquiryFN object| rfvSideEnquiryLN object| revSideEnquiryLN object| rfvSideEnquiryPhone object| revSideEnquiryPhone object| rfvSideEnquiryEmail object| revSideEnquiryEmail object| rfvtxtSideEnquiryMessage object| rfvCaptchaCode object| rfvEmail object| revEmail boolean| Page_ValidationActive function| ValidatorOnSubmit function| PrivacyPolicyClick function| PDPA function| CopyrightClick object| mybutton function| scrollFunction function| topFunction function| closeSearchBox function| gtag object| dataLayer number| uidEvent object| bootstrap object| google_tag_manager object| google_tag_data string| GoogleAnalyticsObject function| ga object| gaplugins object| gaGlobal object| gaData function| lintrk boolean| _already_called_lintrk11 Cookies
Cookies are little pieces of information stored in the browser of a user. Whenever a user visits the site again, he will also send his cookie values, thus allowing the website to re-identify him even if he changed locations. This is how permanent logins work.
Domain/Path | Expires | Name / Value |
---|---|---|
trainocate.com/ | Name: ASP.NET_SessionId Value: 4uqvxr4axhsmnoxupjnd2bag |
|
.trainocate.com/ | Name: _ga Value: GA1.2.1645153369.1677653333 |
|
.trainocate.com/ | Name: _gid Value: GA1.2.748785176.1677653333 |
|
.trainocate.com/ | Name: _gat_gtag_UA_111347014_1 Value: 1 |
|
trainocate.com/ | Name: ln_or Value: eyI5MDM1MjMiOiJkIn0%3D |
|
.linkedin.com/ | Name: li_sugr Value: 8a412eae-7e08-4c44-bd58-7e158dd7fe75 |
|
.linkedin.com/ | Name: bcookie Value: "v=2&4ae2b9e5-97ef-4ea0-8d5e-a95ef65e8a18" |
|
.linkedin.com/ | Name: lidc Value: "b=OGST05:s=O:r=O:a=O:p=O:g=2687:u=1:x=1:i=1677653334:t=1677739734:v=2:sig=AQGP4WpdCbVewFwXHVusT85zqRNdQ9m9" |
|
.linkedin.com/ | Name: UserMatchHistory Value: AQJO6_wtn1-9eQAAAYab7lmlp-6E7DpuUhnlcpgh6cRpfWWuvH-eb39BGz6rxEoAnKu1hZlQtk5BBQ |
|
.linkedin.com/ | Name: AnalyticsSyncHistory Value: AQI3FXjElu8cSgAAAYab7lmlI8pB9PUjlu6lEeTYvxw04iBAFYURy2PGguEHctgsm4se5DcVaJkhT-82lmlYyA |
|
.www.linkedin.com/ | Name: bscookie Value: "v=1&20230301064854175781fc-c4e5-4960-8225-c248588d5e83AQEdATh8tU91kadX5hJcqdp3aWCtx-Tu" |
Security Headers
This page lists any security headers set by the main page. If you want to understand what these mean and how to use them, head on over to this page
Header | Value |
---|---|
Content-Security-Policy | script-src 'unsafe-inline' 'unsafe-eval' 'self' https://cdn.trainocate.com https://www.googletagmanager.com https://www.google.com https://www.google-analytics.com https://www.googleadservices.com https://stats.g.doubleclick.net https://*.hotjar.com https://trc.taboola.com https://www.facebook.com https://snap.licdn.com https://connect.facebook.net https://cdn.taboola.com https://googleads.g.doubleclick.net https://ajax.aspnetcdn.com https://cdn.logwork.com https://logwork.com https://cdnjs.cloudflare.com https://wwliltbvtcore-apimgmt.azure-api.net https://report-uri.cloudflare.com https://wwliltbvtcore-apimgmt.azure-api.net/ilt-scheduling-partners/offerings https://mktdplp102cdn.azureedge.net https://js.xendit.co https://js.xendit.co/v1/xendit.min.js https://code.jquery.com/jquery-3.1.1.min.js https://*.tawk.to https://cdn.jsdelivr.net *.trainocate.com https://embed.tawk.to https://fonts.googleapis.com https://*.ads.linkedin.com https://forms.office.com https://forms.gle https://docs.google.com https://trainocate.activehosted.com https://checkout.razorpay.com/v1/checkout.js https://px.ads.linkedin.com https://diffuser-cdn.app-us1.com https://prism.app-us1.com https://trackcmp.net https://*.paypal.com https://www.paypal.com https://api-m.sandbox.paypal.com https://api-m.paypal.com https://www.paypalobjects.com https://js.braintreegateway.com https://ajax.googleapis.com; |
Strict-Transport-Security | max-age=31536000; includeSubDomains; preload |
X-Content-Type-Options | nosniff |
Indicators
This is a term in the security industry to describe indicators such as IPs, Domains, Hashes, etc. This does not imply that any of these indicate malicious activity.
cdn.linkedin.oribi.io
cdn.trainocate.com
px.ads.linkedin.com
px4.ads.linkedin.com
snap.licdn.com
stats.g.doubleclick.net
trainocate.com
www.google-analytics.com
www.googletagmanager.com
www.linkedin.com
13.107.42.14
13.64.154.142
2403:e800:e80b::2a63:8c8b
2404:6800:4003:c03::66
2404:6800:4003:c04::9c
2404:6800:4003:c11::61
2600:9000:223b:a400:2:53b2:240:93a1
2600:9000:223b:ce00:1:9091:5500:93a1
2620:1ec:21::14
01dd88e98f4038deb68e071b39fef6ddf8bfa60c395c2428e3535daa43839c94
14e735d468688e21a28c67ebea88df51c26fa40572a4b02342ed37d0752e6a84
2516d3710f776f226ef80dee94e8f7c3c960fc04aea9f762ee3a12ce890d3e48
256b3759d9c2b271f85804c715b3d159466bccefdf6c13b720f8baac0dee733c
309af542689bd282738d513d41c74667e666cf063dc548b82659441c1217df40
46c24649e5ac32f4913901516af12758c98eb645abfcadf27b4d19c6ed475636
46cbe28236dd53c9e89c0825fb945a45b423532073ff102201e46a7f5aae59d5
5971b095cff574a66d35ada016d4c077c86e2dea62e9c0f14cf7c94b258619de
6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
7b1eaaaf180a13c29b6dddc3b0ae23333b4397e0f3c065b4c86da2f2530a5f89
7edb2b4e6f2e8cf85d3f2be82a412e3b4039a30640a601f457705169d827ecd5
953c39b93c46656e2d25a28dd13379498f98e991a78f682c4a42c951bc87a0f2
a1936d416b946d62b5ba1fa3a16f5d6059e2fe1e37dc71a039067600c37cd264
adcb44279fec33d926b8158945bc9d22b6c6395596e7a524352eb29171339d37
bdb0e2a36eccb903c0e58638e9daa8c0620fabbbc267a3b69fbb0796f6ca0328
cbfa11e3a9c925e796a2962327321aa3790d53e3627529ba58e3cfa095fd93e5
ddc148b8a0a27b1449fda6033f4a0defac9bd43210117b50d5d7ad1eda09f394
de3246094525b21a870fc7d2a67490d0132535c6fa5993755c549f1a9d1bd8af
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
f1a1a99fd838c027d8d7f0ae402bcbcae93ec60412ca58c2e986ee7fb584c8b4
f56ccb2db87aacedd9415232e40f80bff9939703df2f9c3f9ec8a092e545349f